Micron Document
🎖️GitЯра🎖️

Node / meshcore / MeshCore / files / src / helpers / CommonCLI.cpp

Displaying Raw • Download

src/helpers/CommonCLI.cpp 890a2e2cffa98dea3ca88db3c3aba72ef23ff3f7 (890a2e2c) Text, 47.86 KB

Tff7b72#Tff7b72include T8b949e<Arduino.h>
Tff7b72#Tff7b72include T8b949e"CommonCLI.h"
Tff7b72#Tff7b72include T8b949e"TxtDataHelpers.h"
Tff7b72#Tff7b72include T8b949e"AdvertDataHelpers.h"
Tff7b72#Tff7b72include T8b949e"TxtDataHelpers.h"
Tff7b72#Tff7b72include T8b949e<RTClib.h>

Tff7b72#Tff7b72ifndef BRIDGE_MAX_BAUD
Tff7b72#Tff7b72define BRIDGE_MAX_BAUD 115200
Tff7b72#Tff7b72endif

T8b949e// Believe it or not, this std C function is busted on some platforms!
Tff7b72static Tffa657uint32_t Td2a8ff_atoiTb4b4b4(Tff7b72const Tffa657charTff7b72* Te6edf3spTb4b4b4) Tb4b4b4{
Tffa657uint32_t Te6edf3n Tff7b72= T79c0ff0Tb4b4b4;
Tff7b72while Tb4b4b4(Tff7b72*Te6edf3sp Tff7b72&Tff7b72& Tff7b72*Te6edf3sp Tff7b72>Tff7b72= Ta5d6ff'Ta5d6ff0Ta5d6ff' Tff7b72&Tff7b72& Tff7b72*Te6edf3sp Tff7b72<Tff7b72= Ta5d6ff'Ta5d6ff9Ta5d6ff'Tb4b4b4) Tb4b4b4{
Te6edf3n Tff7b72*Tff7b72= T79c0ff10Tb4b4b4;
Te6edf3n Tff7b72+Tff7b72= Tb4b4b4(Tff7b72*Te6edf3spTff7b72+Tff7b72+ Tff7b72- Ta5d6ff'Ta5d6ff0Ta5d6ff'Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72return Te6edf3nTb4b4b4;
Tb4b4b4}

Tff7b72static Tffa657bool Td2a8ffisValidNameTb4b4b4(Tff7b72const Tffa657char Tff7b72*Te6edf3nTb4b4b4) Tb4b4b4{
Tff7b72while Tb4b4b4(Tff7b72*Te6edf3nTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72*Te6edf3n Tff7b72=Tff7b72= Ta5d6ff'Ta5d6ff[Ta5d6ff' Tff7b72|Tff7b72| Tff7b72*Te6edf3n Tff7b72=Tff7b72= Ta5d6ff'Ta5d6ff]Ta5d6ff' Tff7b72|Tff7b72| Tff7b72*Te6edf3n Tff7b72=Tff7b72= Ta5d6ff'Ta5d6ff\\Ta5d6ff' Tff7b72|Tff7b72| Tff7b72*Te6edf3n Tff7b72=Tff7b72= Ta5d6ff'Ta5d6ff:Ta5d6ff' Tff7b72|Tff7b72| Tff7b72*Te6edf3n Tff7b72=Tff7b72= Ta5d6ff'Ta5d6ff,Ta5d6ff' Tff7b72|Tff7b72| Tff7b72*Te6edf3n Tff7b72=Tff7b72= Ta5d6ff'Ta5d6ff?Ta5d6ff' Tff7b72|Tff7b72| Tff7b72*Te6edf3n Tff7b72=Tff7b72= Ta5d6ff'Ta5d6ff*Ta5d6ff'Tb4b4b4) Tff7b72return Tffa657falseTb4b4b4;
Te6edf3nTff7b72+Tff7b72+Tb4b4b4;
Tb4b4b4}
Tff7b72return Tffa657trueTb4b4b4;
Tb4b4b4}

Tffa657void Td2a8ffCommonCLI::loadPrefsTb4b4b4(Te6edf3FILESYSTEMTff7b72* Te6edf3fsTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3fsTff7b72-Tff7b72>Te6edf3existsTb4b4b4(Ta5d6ff"Ta5d6ff/prefs.jsonTa5d6ff"Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72if defined(RP2040_PLATFORM)
Te6edf3File Te6edf3file Tff7b72= Te6edf3fsTff7b72-Tff7b72>Te6edf3openTb4b4b4(Ta5d6ff"Ta5d6ff/prefs.jsonTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffrTa5d6ff"Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72else
Te6edf3File Te6edf3file Tff7b72= Te6edf3fsTff7b72-Tff7b72>Te6edf3openTb4b4b4(Ta5d6ff"Ta5d6ff/prefs.jsonTa5d6ff"Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif
Tff7b72if Tb4b4b4(Te6edf3fileTb4b4b4) Tb4b4b4{
Te6edf3_prefsTff7b72-Tff7b72>Te6edf3loadSerialTb4b4b4(Te6edf3fileTb4b4b4)Tb4b4b4; T8b949e// new Serial prefs
Te6edf3fileTb4b4b4.Te6edf3closeTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3fsTff7b72-Tff7b72>Te6edf3existsTb4b4b4(Ta5d6ff"Ta5d6ff/com_prefsTa5d6ff"Tb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3loadPrefsIntTb4b4b4(Te6edf3fsTb4b4b4, Ta5d6ff"Ta5d6ff/com_prefsTa5d6ff"Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3savePrefsTb4b4b4(Te6edf3fsTb4b4b4)Tb4b4b4) Tb4b4b4{ T8b949e// save to new Serial prefs
T8b949e// fs->remove("/com_prefs"); // remove old
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}

Tffa657void Td2a8ffCommonCLI::loadPrefsIntTb4b4b4(Te6edf3FILESYSTEMTff7b72* Te6edf3fsTb4b4b4, Tff7b72const Tffa657charTff7b72* Te6edf3filenameTb4b4b4) Tb4b4b4{ T8b949e// Legacy prefs loader
Tff7b72#Tff7b72if defined(RP2040_PLATFORM)
Te6edf3File Te6edf3file Tff7b72= Te6edf3fsTff7b72-Tff7b72>Te6edf3openTb4b4b4(Te6edf3filenameTb4b4b4, Ta5d6ff"Ta5d6ffrTa5d6ff"Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72else
Te6edf3File Te6edf3file Tff7b72= Te6edf3fsTff7b72-Tff7b72>Te6edf3openTb4b4b4(Te6edf3filenameTb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif
Tff7b72if Tb4b4b4(Te6edf3fileTb4b4b4) Tb4b4b4{
Tffa657uint8_t Te6edf3padTb4b4b4[T79c0ff8Tb4b4b4]Tb4b4b4;

Te6edf3fileTb4b4b4.Te6edf3readTb4b4b4(Tb4b4b4(Tffa657uint8_t Tff7b72*Tb4b4b4)Tff7b72&Te6edf3_prefsTff7b72-Tff7b72>Te6edf3airtime_factorTb4b4b4, Tff7b72sizeofTb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3airtime_factorTb4b4b4)Tb4b4b4)Tb4b4b4; T8b949e// 0
Te6edf3fileTb4b4b4.Te6edf3readTb4b4b4(Tb4b4b4(Tffa657uint8_t Tff7b72*Tb4b4b4)Tff7b72&Te6edf3_prefsTff7b72-Tff7b72>Te6edf3node_nameTb4b4b4, Tff7b72sizeofTb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3node_nameTb4b4b4)Tb4b4b4)Tb4b4b4; T8b949e// 4
Te6edf3fileTb4b4b4.Te6edf3readTb4b4b4(Te6edf3padTb4b4b4, T79c0ff4Tb4b4b4)Tb4b4b4; T8b949e// 36
Te6edf3fileTb4b4b4.Te6edf3readTb4b4b4(Tb4b4b4(Tffa657uint8_t Tff7b72*Tb4b4b4)Tff7b72&Te6edf3_prefsTff7b72-Tff7b72>Te6edf3node_latTb4b4b4, Tff7b72sizeofTb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3node_latTb4b4b4)Tb4b4b4)Tb4b4b4; T8b949e// 40
Te6edf3fileTb4b4b4.Te6edf3readTb4b4b4(Tb4b4b4(Tffa657uint8_t Tff7b72*Tb4b4b4)Tff7b72&Te6edf3_prefsTff7b72-Tff7b72>Te6edf3node_lonTb4b4b4, Tff7b72sizeofTb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3node_lonTb4b4b4)Tb4b4b4)Tb4b4b4; T8b949e// 48
Te6edf3fileTb4b4b4.Te6edf3readTb4b4b4(Tb4b4b4(Tffa657uint8_t Tff7b72*Tb4b4b4)Tff7b72&Te6edf3_prefsTff7b72-Tff7b72>Te6edf3passwordTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4, Tff7b72sizeofTb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3passwordTb4b4b4)Tb4b4b4)Tb4b4b4; T8b949e// 56
Te6edf3fileTb4b4b4.Te6edf3readTb4b4b4(Tb4b4b4(Tffa657uint8_t Tff7b72*Tb4b4b4)Tff7b72&Te6edf3_prefsTff7b72-Tff7b72>Te6edf3freqTb4b4b4, Tff7b72sizeofTb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3freqTb4b4b4)Tb4b4b4)Tb4b4b4; T8b949e// 72
Te6edf3fileTb4b4b4.Te6edf3readTb4b4b4(Tb4b4b4(Tffa657uint8_t Tff7b72*Tb4b4b4)Tff7b72&Te6edf3_prefsTff7b72-Tff7b72>Te6edf3tx_power_dbmTb4b4b4, Tff7b72sizeofTb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3tx_power_dbmTb4b4b4)Tb4b4b4)Tb4b4b4; T8b949e// 76
Te6edf3fileTb4b4b4.Te6edf3readTb4b4b4(Tb4b4b4(Tffa657uint8_t Tff7b72*Tb4b4b4)Tff7b72&Te6edf3_prefsTff7b72-Tff7b72>Te6edf3disable_fwdTb4b4b4, Tff7b72sizeofTb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3disable_fwdTb4b4b4)Tb4b4b4)Tb4b4b4; T8b949e// 77
Te6edf3fileTb4b4b4.Te6edf3readTb4b4b4(Tb4b4b4(Tffa657uint8_t Tff7b72*Tb4b4b4)Tff7b72&Te6edf3_prefsTff7b72-Tff7b72>Te6edf3advert_intervalTb4b4b4, Tff7b72sizeofTb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3advert_intervalTb4b4b4)Tb4b4b4)Tb4b4b4; T8b949e// 78
Te6edf3fileTb4b4b4.Te6edf3readTb4b4b4(Te6edf3padTb4b4b4, T79c0ff1Tb4b4b4)Tb4b4b4; T8b949e// 79 : 1 byte unused (was rx_boosted_gain in v1.14.1, moved to end for upgrade compat)
Te6edf3fileTb4b4b4.Te6edf3readTb4b4b4(Tb4b4b4(Tffa657uint8_t Tff7b72*Tb4b4b4)Tff7b72&Te6edf3_prefsTff7b72-Tff7b72>Te6edf3rx_delay_baseTb4b4b4, Tff7b72sizeofTb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3rx_delay_baseTb4b4b4)Tb4b4b4)Tb4b4b4; T8b949e// 80
Te6edf3fileTb4b4b4.Te6edf3readTb4b4b4(Tb4b4b4(Tffa657uint8_t Tff7b72*Tb4b4b4)Tff7b72&Te6edf3_prefsTff7b72-Tff7b72>Te6edf3tx_delay_factorTb4b4b4, Tff7b72sizeofTb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3tx_delay_factorTb4b4b4)Tb4b4b4)Tb4b4b4; T8b949e// 84
Te6edf3fileTb4b4b4.Te6edf3readTb4b4b4(Tb4b4b4(Tffa657uint8_t Tff7b72*Tb4b4b4)Tff7b72&Te6edf3_prefsTff7b72-Tff7b72>Te6edf3guest_passwordTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4, Tff7b72sizeofTb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3guest_passwordTb4b4b4)Tb4b4b4)Tb4b4b4; T8b949e// 88
Te6edf3fileTb4b4b4.Te6edf3readTb4b4b4(Tb4b4b4(Tffa657uint8_t Tff7b72*Tb4b4b4)Tff7b72&Te6edf3_prefsTff7b72-Tff7b72>Te6edf3direct_tx_delay_factorTb4b4b4, Tff7b72sizeofTb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3direct_tx_delay_factorTb4b4b4)Tb4b4b4)Tb4b4b4; T8b949e// 104
Te6edf3fileTb4b4b4.Te6edf3readTb4b4b4(Te6edf3padTb4b4b4, T79c0ff4Tb4b4b4)Tb4b4b4; T8b949e// 108 : 4 bytes unused
Te6edf3fileTb4b4b4.Te6edf3readTb4b4b4(Tb4b4b4(Tffa657uint8_t Tff7b72*Tb4b4b4)Tff7b72&Te6edf3_prefsTff7b72-Tff7b72>Te6edf3sfTb4b4b4, Tff7b72sizeofTb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3sfTb4b4b4)Tb4b4b4)Tb4b4b4; T8b949e// 112
Te6edf3fileTb4b4b4.Te6edf3readTb4b4b4(Tb4b4b4(Tffa657uint8_t Tff7b72*Tb4b4b4)Tff7b72&Te6edf3_prefsTff7b72-Tff7b72>Te6edf3crTb4b4b4, Tff7b72sizeofTb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3crTb4b4b4)Tb4b4b4)Tb4b4b4; T8b949e// 113
Te6edf3fileTb4b4b4.Te6edf3readTb4b4b4(Tb4b4b4(Tffa657uint8_t Tff7b72*Tb4b4b4)Tff7b72&Te6edf3_prefsTff7b72-Tff7b72>Te6edf3allow_read_onlyTb4b4b4, Tff7b72sizeofTb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3allow_read_onlyTb4b4b4)Tb4b4b4)Tb4b4b4; T8b949e// 114
Te6edf3fileTb4b4b4.Te6edf3readTb4b4b4(Tb4b4b4(Tffa657uint8_t Tff7b72*Tb4b4b4)Tff7b72&Te6edf3_prefsTff7b72-Tff7b72>Te6edf3multi_acksTb4b4b4, Tff7b72sizeofTb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3multi_acksTb4b4b4)Tb4b4b4)Tb4b4b4; T8b949e// 115
Te6edf3fileTb4b4b4.Te6edf3readTb4b4b4(Tb4b4b4(Tffa657uint8_t Tff7b72*Tb4b4b4)Tff7b72&Te6edf3_prefsTff7b72-Tff7b72>Te6edf3bwTb4b4b4, Tff7b72sizeofTb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3bwTb4b4b4)Tb4b4b4)Tb4b4b4; T8b949e// 116
Te6edf3fileTb4b4b4.Te6edf3readTb4b4b4(Tb4b4b4(Tffa657uint8_t Tff7b72*Tb4b4b4)Tff7b72&Te6edf3_prefsTff7b72-Tff7b72>Te6edf3agc_reset_intervalTb4b4b4, Tff7b72sizeofTb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3agc_reset_intervalTb4b4b4)Tb4b4b4)Tb4b4b4; T8b949e// 120
Te6edf3fileTb4b4b4.Te6edf3readTb4b4b4(Tb4b4b4(Tffa657uint8_t Tff7b72*Tb4b4b4)Tff7b72&Te6edf3_prefsTff7b72-Tff7b72>Te6edf3path_hash_modeTb4b4b4, Tff7b72sizeofTb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3path_hash_modeTb4b4b4)Tb4b4b4)Tb4b4b4; T8b949e// 121
Te6edf3fileTb4b4b4.Te6edf3readTb4b4b4(Tb4b4b4(Tffa657uint8_t Tff7b72*Tb4b4b4)Tff7b72&Te6edf3_prefsTff7b72-Tff7b72>Te6edf3loop_detectTb4b4b4, Tff7b72sizeofTb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3loop_detectTb4b4b4)Tb4b4b4)Tb4b4b4; T8b949e// 122
Te6edf3fileTb4b4b4.Te6edf3readTb4b4b4(Te6edf3padTb4b4b4, T79c0ff1Tb4b4b4)Tb4b4b4; T8b949e// 123
Te6edf3fileTb4b4b4.Te6edf3readTb4b4b4(Tb4b4b4(Tffa657uint8_t Tff7b72*Tb4b4b4)Tff7b72&Te6edf3_prefsTff7b72-Tff7b72>Te6edf3flood_maxTb4b4b4, Tff7b72sizeofTb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3flood_maxTb4b4b4)Tb4b4b4)Tb4b4b4; T8b949e// 124
Te6edf3fileTb4b4b4.Te6edf3readTb4b4b4(Tb4b4b4(Tffa657uint8_t Tff7b72*Tb4b4b4)Tff7b72&Te6edf3_prefsTff7b72-Tff7b72>Te6edf3flood_advert_intervalTb4b4b4, Tff7b72sizeofTb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3flood_advert_intervalTb4b4b4)Tb4b4b4)Tb4b4b4; T8b949e// 125
Te6edf3fileTb4b4b4.Te6edf3readTb4b4b4(Tb4b4b4(Tffa657uint8_t Tff7b72*Tb4b4b4)Tff7b72&Te6edf3_prefsTff7b72-Tff7b72>Te6edf3interference_thresholdTb4b4b4, Tff7b72sizeofTb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3interference_thresholdTb4b4b4)Tb4b4b4)Tb4b4b4; T8b949e// 126
Te6edf3fileTb4b4b4.Te6edf3readTb4b4b4(Tb4b4b4(Tffa657uint8_t Tff7b72*Tb4b4b4)Tff7b72&Te6edf3_prefsTff7b72-Tff7b72>Te6edf3bridge_enabledTb4b4b4, Tff7b72sizeofTb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3bridge_enabledTb4b4b4)Tb4b4b4)Tb4b4b4; T8b949e// 127
Te6edf3fileTb4b4b4.Te6edf3readTb4b4b4(Tb4b4b4(Tffa657uint8_t Tff7b72*Tb4b4b4)Tff7b72&Te6edf3_prefsTff7b72-Tff7b72>Te6edf3bridge_delayTb4b4b4, Tff7b72sizeofTb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3bridge_delayTb4b4b4)Tb4b4b4)Tb4b4b4; T8b949e// 128
Te6edf3fileTb4b4b4.Te6edf3readTb4b4b4(Tb4b4b4(Tffa657uint8_t Tff7b72*Tb4b4b4)Tff7b72&Te6edf3_prefsTff7b72-Tff7b72>Te6edf3bridge_pkt_srcTb4b4b4, Tff7b72sizeofTb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3bridge_pkt_srcTb4b4b4)Tb4b4b4)Tb4b4b4; T8b949e// 130
Te6edf3fileTb4b4b4.Te6edf3readTb4b4b4(Tb4b4b4(Tffa657uint8_t Tff7b72*Tb4b4b4)Tff7b72&Te6edf3_prefsTff7b72-Tff7b72>Te6edf3bridge_baudTb4b4b4, Tff7b72sizeofTb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3bridge_baudTb4b4b4)Tb4b4b4)Tb4b4b4; T8b949e// 131
Te6edf3fileTb4b4b4.Te6edf3readTb4b4b4(Tb4b4b4(Tffa657uint8_t Tff7b72*Tb4b4b4)Tff7b72&Te6edf3_prefsTff7b72-Tff7b72>Te6edf3bridge_channelTb4b4b4, Tff7b72sizeofTb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3bridge_channelTb4b4b4)Tb4b4b4)Tb4b4b4; T8b949e// 135
Te6edf3fileTb4b4b4.Te6edf3readTb4b4b4(Tb4b4b4(Tffa657uint8_t Tff7b72*Tb4b4b4)Tff7b72&Te6edf3_prefsTff7b72-Tff7b72>Te6edf3bridge_secretTb4b4b4, Tff7b72sizeofTb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3bridge_secretTb4b4b4)Tb4b4b4)Tb4b4b4; T8b949e// 136
Te6edf3fileTb4b4b4.Te6edf3readTb4b4b4(Tb4b4b4(Tffa657uint8_t Tff7b72*Tb4b4b4)Tff7b72&Te6edf3_prefsTff7b72-Tff7b72>Te6edf3powersaving_enabledTb4b4b4, Tff7b72sizeofTb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3powersaving_enabledTb4b4b4)Tb4b4b4)Tb4b4b4; T8b949e// 152
Te6edf3fileTb4b4b4.Te6edf3readTb4b4b4(Te6edf3padTb4b4b4, T79c0ff3Tb4b4b4)Tb4b4b4; T8b949e// 153
Te6edf3fileTb4b4b4.Te6edf3readTb4b4b4(Tb4b4b4(Tffa657uint8_t Tff7b72*Tb4b4b4)Tff7b72&Te6edf3_prefsTff7b72-Tff7b72>Te6edf3gps_enabledTb4b4b4, Tff7b72sizeofTb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3gps_enabledTb4b4b4)Tb4b4b4)Tb4b4b4; T8b949e// 156
Te6edf3fileTb4b4b4.Te6edf3readTb4b4b4(Tb4b4b4(Tffa657uint8_t Tff7b72*Tb4b4b4)Tff7b72&Te6edf3_prefsTff7b72-Tff7b72>Te6edf3gps_intervalTb4b4b4, Tff7b72sizeofTb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3gps_intervalTb4b4b4)Tb4b4b4)Tb4b4b4; T8b949e// 157
Te6edf3fileTb4b4b4.Te6edf3readTb4b4b4(Tb4b4b4(Tffa657uint8_t Tff7b72*Tb4b4b4)Tff7b72&Te6edf3_prefsTff7b72-Tff7b72>Te6edf3advert_loc_policyTb4b4b4, Tff7b72sizeof Tb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3advert_loc_policyTb4b4b4)Tb4b4b4)Tb4b4b4; T8b949e// 161
Te6edf3fileTb4b4b4.Te6edf3readTb4b4b4(Tb4b4b4(Tffa657uint8_t Tff7b72*Tb4b4b4)Tff7b72&Te6edf3_prefsTff7b72-Tff7b72>Te6edf3discovery_mod_timestampTb4b4b4, Tff7b72sizeofTb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3discovery_mod_timestampTb4b4b4)Tb4b4b4)Tb4b4b4; T8b949e// 162
Te6edf3fileTb4b4b4.Te6edf3readTb4b4b4(Tb4b4b4(Tffa657uint8_t Tff7b72*Tb4b4b4)Tff7b72&Te6edf3_prefsTff7b72-Tff7b72>Te6edf3adc_multiplierTb4b4b4, Tff7b72sizeofTb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3adc_multiplierTb4b4b4)Tb4b4b4)Tb4b4b4; T8b949e// 166
Te6edf3fileTb4b4b4.Te6edf3readTb4b4b4(Tb4b4b4(Tffa657uint8_t Tff7b72*Tb4b4b4)Te6edf3_prefsTff7b72-Tff7b72>Te6edf3owner_infoTb4b4b4, Tff7b72sizeofTb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3owner_infoTb4b4b4)Tb4b4b4)Tb4b4b4; T8b949e// 170
Te6edf3fileTb4b4b4.Te6edf3readTb4b4b4(Tb4b4b4(Tffa657uint8_t Tff7b72*Tb4b4b4)Tff7b72&Te6edf3_prefsTff7b72-Tff7b72>Te6edf3rx_boosted_gainTb4b4b4, Tff7b72sizeofTb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3rx_boosted_gainTb4b4b4)Tb4b4b4)Tb4b4b4; T8b949e// 290
Te6edf3fileTb4b4b4.Te6edf3readTb4b4b4(Tb4b4b4(Tffa657uint8_t Tff7b72*Tb4b4b4)Tff7b72&Te6edf3_prefsTff7b72-Tff7b72>Te6edf3flood_max_unscopedTb4b4b4, Tff7b72sizeofTb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3flood_max_unscopedTb4b4b4)Tb4b4b4)Tb4b4b4; T8b949e// 291
Te6edf3fileTb4b4b4.Te6edf3readTb4b4b4(Tb4b4b4(Tffa657uint8_t Tff7b72*Tb4b4b4)Tff7b72&Te6edf3_prefsTff7b72-Tff7b72>Te6edf3flood_max_advertTb4b4b4, Tff7b72sizeofTb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3flood_max_advertTb4b4b4)Tb4b4b4)Tb4b4b4; T8b949e// 292
Te6edf3fileTb4b4b4.Te6edf3readTb4b4b4(Tb4b4b4(Tffa657uint8_t Tff7b72*Tb4b4b4)Tff7b72&Te6edf3_prefsTff7b72-Tff7b72>Te6edf3radio_fem_rxgainTb4b4b4, Tff7b72sizeofTb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3radio_fem_rxgainTb4b4b4)Tb4b4b4)Tb4b4b4; T8b949e// 293
Te6edf3fileTb4b4b4.Te6edf3readTb4b4b4(Tb4b4b4(Tffa657uint8_t Tff7b72*Tb4b4b4)Tff7b72&Te6edf3_prefsTff7b72-Tff7b72>Te6edf3cad_enabledTb4b4b4, Tff7b72sizeofTb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3cad_enabledTb4b4b4)Tb4b4b4)Tb4b4b4; T8b949e// 294
T8b949e// next: 295

T8b949e// sanitise bad pref values
Te6edf3_prefsTff7b72-Tff7b72>Te6edf3rx_delay_base Tff7b72= Te6edf3constrainTb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3rx_delay_baseTb4b4b4, T79c0ff0Tb4b4b4, T79c0ff20.0fTb4b4b4)Tb4b4b4;
Te6edf3_prefsTff7b72-Tff7b72>Te6edf3tx_delay_factor Tff7b72= Te6edf3constrainTb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3tx_delay_factorTb4b4b4, T79c0ff0Tb4b4b4, T79c0ff2.0fTb4b4b4)Tb4b4b4;
Te6edf3_prefsTff7b72-Tff7b72>Te6edf3direct_tx_delay_factor Tff7b72= Te6edf3constrainTb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3direct_tx_delay_factorTb4b4b4, T79c0ff0Tb4b4b4, T79c0ff2.0fTb4b4b4)Tb4b4b4;
Te6edf3_prefsTff7b72-Tff7b72>Te6edf3airtime_factor Tff7b72= Te6edf3constrainTb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3airtime_factorTb4b4b4, T79c0ff0Tb4b4b4, T79c0ff9.0fTb4b4b4)Tb4b4b4;
Te6edf3_prefsTff7b72-Tff7b72>Te6edf3freq Tff7b72= Te6edf3constrainTb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3freqTb4b4b4, T79c0ff150.0fTb4b4b4, T79c0ff2500.0fTb4b4b4)Tb4b4b4;
Te6edf3_prefsTff7b72-Tff7b72>Te6edf3bw Tff7b72= Te6edf3constrainTb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3bwTb4b4b4, T79c0ff7.8fTb4b4b4, T79c0ff500.0fTb4b4b4)Tb4b4b4;
Te6edf3_prefsTff7b72-Tff7b72>Te6edf3sf Tff7b72= Te6edf3constrainTb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3sfTb4b4b4, T79c0ff5Tb4b4b4, T79c0ff12Tb4b4b4)Tb4b4b4;
Te6edf3_prefsTff7b72-Tff7b72>Te6edf3cr Tff7b72= Te6edf3constrainTb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3crTb4b4b4, T79c0ff5Tb4b4b4, T79c0ff8Tb4b4b4)Tb4b4b4;
Te6edf3_prefsTff7b72-Tff7b72>Te6edf3tx_power_dbm Tff7b72= Te6edf3constrainTb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3tx_power_dbmTb4b4b4, T79c0ff-9Tb4b4b4, T79c0ff30Tb4b4b4)Tb4b4b4;
Te6edf3_prefsTff7b72-Tff7b72>Te6edf3multi_acks Tff7b72= Te6edf3constrainTb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3multi_acksTb4b4b4, T79c0ff0Tb4b4b4, T79c0ff1Tb4b4b4)Tb4b4b4;
Te6edf3_prefsTff7b72-Tff7b72>Te6edf3adc_multiplier Tff7b72= Te6edf3constrainTb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3adc_multiplierTb4b4b4, T79c0ff0.0fTb4b4b4, T79c0ff10.0fTb4b4b4)Tb4b4b4;
Te6edf3_prefsTff7b72-Tff7b72>Te6edf3path_hash_mode Tff7b72= Te6edf3constrainTb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3path_hash_modeTb4b4b4, T79c0ff0Tb4b4b4, T79c0ff2Tb4b4b4)Tb4b4b4; T8b949e// NOTE: mode 3 reserved for future

T8b949e// sanitise bad bridge pref values
Te6edf3_prefsTff7b72-Tff7b72>Te6edf3bridge_enabled Tff7b72= Te6edf3constrainTb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3bridge_enabledTb4b4b4, T79c0ff0Tb4b4b4, T79c0ff1Tb4b4b4)Tb4b4b4;
Te6edf3_prefsTff7b72-Tff7b72>Te6edf3bridge_delay Tff7b72= Te6edf3constrainTb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3bridge_delayTb4b4b4, T79c0ff0Tb4b4b4, T79c0ff10000Tb4b4b4)Tb4b4b4;
Te6edf3_prefsTff7b72-Tff7b72>Te6edf3bridge_pkt_src Tff7b72= Te6edf3constrainTb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3bridge_pkt_srcTb4b4b4, T79c0ff0Tb4b4b4, T79c0ff1Tb4b4b4)Tb4b4b4;
Te6edf3_prefsTff7b72-Tff7b72>Te6edf3bridge_baud Tff7b72= Te6edf3constrainTb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3bridge_baudTb4b4b4, T79c0ff9600Tb4b4b4, Te6edf3BRIDGE_MAX_BAUDTb4b4b4)Tb4b4b4;
Te6edf3_prefsTff7b72-Tff7b72>Te6edf3bridge_channel Tff7b72= Te6edf3constrainTb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3bridge_channelTb4b4b4, T79c0ff0Tb4b4b4, T79c0ff14Tb4b4b4)Tb4b4b4;

Te6edf3_prefsTff7b72-Tff7b72>Te6edf3powersaving_enabled Tff7b72= Te6edf3constrainTb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3powersaving_enabledTb4b4b4, T79c0ff0Tb4b4b4, T79c0ff1Tb4b4b4)Tb4b4b4;

Te6edf3_prefsTff7b72-Tff7b72>Te6edf3gps_enabled Tff7b72= Te6edf3constrainTb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3gps_enabledTb4b4b4, T79c0ff0Tb4b4b4, T79c0ff1Tb4b4b4)Tb4b4b4;
Te6edf3_prefsTff7b72-Tff7b72>Te6edf3advert_loc_policy Tff7b72= Te6edf3constrainTb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3advert_loc_policyTb4b4b4, T79c0ff0Tb4b4b4, T79c0ff2Tb4b4b4)Tb4b4b4;

T8b949e// sanitise settings
Te6edf3_prefsTff7b72-Tff7b72>Te6edf3rx_boosted_gain Tff7b72= Te6edf3constrainTb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3rx_boosted_gainTb4b4b4, T79c0ff0Tb4b4b4, T79c0ff1Tb4b4b4)Tb4b4b4; T8b949e// boolean
Te6edf3_prefsTff7b72-Tff7b72>Te6edf3radio_fem_rxgain Tff7b72= Te6edf3constrainTb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3radio_fem_rxgainTb4b4b4, T79c0ff0Tb4b4b4, T79c0ff1Tb4b4b4)Tb4b4b4; T8b949e// boolean
Te6edf3_prefsTff7b72-Tff7b72>Te6edf3radio_fem_txgain Tff7b72= Te6edf3constrainTb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3radio_fem_txgainTb4b4b4, T79c0ff0Tb4b4b4, T79c0ff1Tb4b4b4)Tb4b4b4; T8b949e// boolean
Te6edf3_prefsTff7b72-Tff7b72>Te6edf3cad_enabled Tff7b72= Te6edf3constrainTb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3cad_enabledTb4b4b4, T79c0ff0Tb4b4b4, T79c0ff1Tb4b4b4)Tb4b4b4; T8b949e// boolean

Te6edf3fileTb4b4b4.Te6edf3closeTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}

Tffa657bool Td2a8ffCommonCLI::savePrefsTb4b4b4(Te6edf3FILESYSTEMTff7b72* Te6edf3fsTb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72if defined(NRF52_PLATFORM) || defined(STM32_PLATFORM)
Te6edf3fsTff7b72-Tff7b72>Te6edf3removeTb4b4b4(Ta5d6ff"Ta5d6ff/prefs.jsonTa5d6ff"Tb4b4b4)Tb4b4b4;
Te6edf3File Te6edf3file Tff7b72= Te6edf3fsTff7b72-Tff7b72>Te6edf3openTb4b4b4(Ta5d6ff"Ta5d6ff/prefs.jsonTa5d6ff"Tb4b4b4, Te6edf3FILE_O_WRITETb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72elif defined(RP2040_PLATFORM)
Te6edf3File Te6edf3file Tff7b72= Te6edf3fsTff7b72-Tff7b72>Te6edf3openTb4b4b4(Ta5d6ff"Ta5d6ff/prefs.jsonTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffwTa5d6ff"Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72else
Te6edf3File Te6edf3file Tff7b72= Te6edf3fsTff7b72-Tff7b72>Te6edf3openTb4b4b4(Ta5d6ff"Ta5d6ff/prefs.jsonTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffwTa5d6ff"Tb4b4b4, Tffa657trueTb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif
Tff7b72if Tb4b4b4(Te6edf3fileTb4b4b4) Tb4b4b4{
Tffa657bool Te6edf3success Tff7b72= Te6edf3_prefsTff7b72-Tff7b72>Te6edf3saveSerialTb4b4b4(Te6edf3fileTb4b4b4)Tb4b4b4;
Te6edf3fileTb4b4b4.Te6edf3closeTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72return Te6edf3successTb4b4b4;
Tb4b4b4}
Tff7b72return Tffa657falseTb4b4b4;
Tb4b4b4}

Tff7b72#Tff7b72define MIN_LOCAL_ADVERT_INTERVAL 60

Tffa657void Td2a8ffCommonCLI::savePrefsTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3advert_interval Tff7b72* T79c0ff2 Tff7b72< Te6edf3MIN_LOCAL_ADVERT_INTERVALTb4b4b4) Tb4b4b4{
Te6edf3_prefsTff7b72-Tff7b72>Te6edf3advert_interval Tff7b72= T79c0ff0Tb4b4b4; T8b949e// turn it off, now that device has been manually configured
Tb4b4b4}
Te6edf3_callbacksTff7b72-Tff7b72>Te6edf3savePrefsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}

Tffa657uint8_t Td2a8ffCommonCLI::buildAdvertDataTb4b4b4(Tffa657uint8_t Te6edf3node_typeTb4b4b4, Tffa657uint8_tTff7b72* Te6edf3app_dataTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3advert_loc_policy Tff7b72=Tff7b72= Te6edf3ADVERT_LOC_NONETb4b4b4) Tb4b4b4{
Te6edf3AdvertDataBuilder Te6edf3builderTb4b4b4(Te6edf3node_typeTb4b4b4, Te6edf3_prefsTff7b72-Tff7b72>Te6edf3node_nameTb4b4b4)Tb4b4b4;
Tff7b72return Te6edf3builderTb4b4b4.Te6edf3encodeToTb4b4b4(Te6edf3app_dataTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3advert_loc_policy Tff7b72=Tff7b72= Te6edf3ADVERT_LOC_SHARETb4b4b4) Tb4b4b4{
Te6edf3AdvertDataBuilder Te6edf3builderTb4b4b4(Te6edf3node_typeTb4b4b4, Te6edf3_prefsTff7b72-Tff7b72>Te6edf3node_nameTb4b4b4, Te6edf3_sensorsTff7b72-Tff7b72>Te6edf3node_latTb4b4b4, Te6edf3_sensorsTff7b72-Tff7b72>Te6edf3node_lonTb4b4b4)Tb4b4b4;
Tff7b72return Te6edf3builderTb4b4b4.Te6edf3encodeToTb4b4b4(Te6edf3app_dataTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3AdvertDataBuilder Te6edf3builderTb4b4b4(Te6edf3node_typeTb4b4b4, Te6edf3_prefsTff7b72-Tff7b72>Te6edf3node_nameTb4b4b4, Te6edf3_prefsTff7b72-Tff7b72>Te6edf3node_latTb4b4b4, Te6edf3_prefsTff7b72-Tff7b72>Te6edf3node_lonTb4b4b4)Tb4b4b4;
Tff7b72return Te6edf3builderTb4b4b4.Te6edf3encodeToTb4b4b4(Te6edf3app_dataTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}

Tffa657void Td2a8ffCommonCLI::handleCommandTb4b4b4(Tffa657uint32_t Te6edf3sender_timestampTb4b4b4, Tffa657charTff7b72* Te6edf3commandTb4b4b4, Tffa657charTff7b72* Te6edf3replyTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3commandTb4b4b4, Ta5d6ff"Ta5d6ffpoweroffTa5d6ff"Tb4b4b4, T79c0ff8Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0 Tff7b72|Tff7b72| Te6edf3memcmpTb4b4b4(Te6edf3commandTb4b4b4, Ta5d6ff"Ta5d6ffshutdownTa5d6ff"Tb4b4b4, T79c0ff8Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3_boardTff7b72-Tff7b72>Te6edf3powerOffTb4b4b4(Tb4b4b4)Tb4b4b4; T8b949e// doesn't return
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3commandTb4b4b4, Ta5d6ff"Ta5d6ffrebootTa5d6ff"Tb4b4b4, T79c0ff6Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3_boardTff7b72-Tff7b72>Te6edf3rebootTb4b4b4(Tb4b4b4)Tb4b4b4; T8b949e// doesn't return
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3commandTb4b4b4, Ta5d6ff"Ta5d6ffclkrebootTa5d6ff"Tb4b4b4, T79c0ff9Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
T8b949e// Reset clock
Te6edf3getRTCClockTb4b4b4(Tb4b4b4)Tff7b72-Tff7b72>Te6edf3setCurrentTimeTb4b4b4(T79c0ff1715770351Tb4b4b4)Tb4b4b4; T8b949e// 15 May 2024, 8:50pm
Te6edf3_boardTff7b72-Tff7b72>Te6edf3rebootTb4b4b4(Tb4b4b4)Tb4b4b4; T8b949e// doesn't return
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3commandTb4b4b4, Ta5d6ff"Ta5d6ffadvert.zerohopTa5d6ff"Tb4b4b4, T79c0ff14Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0 Tff7b72&Tff7b72& Tb4b4b4(Te6edf3commandTb4b4b4[T79c0ff14Tb4b4b4] Tff7b72=Tff7b72= T79c0ff0 Tff7b72|Tff7b72| Te6edf3commandTb4b4b4[T79c0ff14Tb4b4b4] Tff7b72=Tff7b72= Ta5d6ff'Ta5d6ff Ta5d6ff'Tb4b4b4)Tb4b4b4) Tb4b4b4{
T8b949e// send zerohop advert
Te6edf3_callbacksTff7b72-Tff7b72>Te6edf3sendSelfAdvertisementTb4b4b4(T79c0ff1500Tb4b4b4, Tffa657falseTb4b4b4)Tb4b4b4; T8b949e// longer delay, give CLI response time to be sent first
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffOK - zerohop advert sentTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3commandTb4b4b4, Ta5d6ff"Ta5d6ffadvertTa5d6ff"Tb4b4b4, T79c0ff6Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
T8b949e// send flood advert
Te6edf3_callbacksTff7b72-Tff7b72>Te6edf3sendSelfAdvertisementTb4b4b4(T79c0ff1500Tb4b4b4, Tffa657trueTb4b4b4)Tb4b4b4; T8b949e// longer delay, give CLI response time to be sent first
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffOK - Advert sentTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3commandTb4b4b4, Ta5d6ff"Ta5d6ffclock syncTa5d6ff"Tb4b4b4, T79c0ff10Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Tffa657uint32_t Te6edf3curr Tff7b72= Te6edf3getRTCClockTb4b4b4(Tb4b4b4)Tff7b72-Tff7b72>Te6edf3getCurrentTimeTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3sender_timestamp Tff7b72> Te6edf3currTb4b4b4) Tb4b4b4{
Te6edf3getRTCClockTb4b4b4(Tb4b4b4)Tff7b72-Tff7b72>Te6edf3setCurrentTimeTb4b4b4(Te6edf3sender_timestamp Tff7b72+ T79c0ff1Tb4b4b4)Tb4b4b4;
Tffa657uint32_t Te6edf3now Tff7b72= Te6edf3getRTCClockTb4b4b4(Tb4b4b4)Tff7b72-Tff7b72>Te6edf3getCurrentTimeTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3DateTime Te6edf3dt Tff7b72= Te6edf3DateTimeTb4b4b4(Te6edf3nowTb4b4b4)Tb4b4b4;
Te6edf3sprintfTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffOK - clock set: %02d:%02d - %d/%d/%d UTCTa5d6ff"Tb4b4b4, Te6edf3dtTb4b4b4.Te6edf3hourTb4b4b4(Tb4b4b4)Tb4b4b4, Te6edf3dtTb4b4b4.Te6edf3minuteTb4b4b4(Tb4b4b4)Tb4b4b4, Te6edf3dtTb4b4b4.Te6edf3dayTb4b4b4(Tb4b4b4)Tb4b4b4, Te6edf3dtTb4b4b4.Te6edf3monthTb4b4b4(Tb4b4b4)Tb4b4b4, Te6edf3dtTb4b4b4.Te6edf3yearTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffERR: clock cannot go backwardsTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3commandTb4b4b4, Ta5d6ff"Ta5d6ffstart otaTa5d6ff"Tb4b4b4, T79c0ff9Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3_boardTff7b72-Tff7b72>Te6edf3startOTAUpdateTb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3node_nameTb4b4b4, Te6edf3replyTb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffErrorTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3commandTb4b4b4, Ta5d6ff"Ta5d6ffclockTa5d6ff"Tb4b4b4, T79c0ff5Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Tffa657uint32_t Te6edf3now Tff7b72= Te6edf3getRTCClockTb4b4b4(Tb4b4b4)Tff7b72-Tff7b72>Te6edf3getCurrentTimeTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3DateTime Te6edf3dt Tff7b72= Te6edf3DateTimeTb4b4b4(Te6edf3nowTb4b4b4)Tb4b4b4;
Te6edf3sprintfTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ff%02d:%02d - %d/%d/%d UTCTa5d6ff"Tb4b4b4, Te6edf3dtTb4b4b4.Te6edf3hourTb4b4b4(Tb4b4b4)Tb4b4b4, Te6edf3dtTb4b4b4.Te6edf3minuteTb4b4b4(Tb4b4b4)Tb4b4b4, Te6edf3dtTb4b4b4.Te6edf3dayTb4b4b4(Tb4b4b4)Tb4b4b4, Te6edf3dtTb4b4b4.Te6edf3monthTb4b4b4(Tb4b4b4)Tb4b4b4, Te6edf3dtTb4b4b4.Te6edf3yearTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3commandTb4b4b4, Ta5d6ff"Ta5d6fftime Ta5d6ff"Tb4b4b4, T79c0ff5Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{ T8b949e// set time (to epoch seconds)
Tffa657uint32_t Te6edf3secs Tff7b72= Te6edf3_atoiTb4b4b4(Tff7b72&Te6edf3commandTb4b4b4[T79c0ff5Tb4b4b4]Tb4b4b4)Tb4b4b4;
Tffa657uint32_t Te6edf3curr Tff7b72= Te6edf3getRTCClockTb4b4b4(Tb4b4b4)Tff7b72-Tff7b72>Te6edf3getCurrentTimeTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3secs Tff7b72> Te6edf3currTb4b4b4) Tb4b4b4{
Te6edf3getRTCClockTb4b4b4(Tb4b4b4)Tff7b72-Tff7b72>Te6edf3setCurrentTimeTb4b4b4(Te6edf3secsTb4b4b4)Tb4b4b4;
Tffa657uint32_t Te6edf3now Tff7b72= Te6edf3getRTCClockTb4b4b4(Tb4b4b4)Tff7b72-Tff7b72>Te6edf3getCurrentTimeTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3DateTime Te6edf3dt Tff7b72= Te6edf3DateTimeTb4b4b4(Te6edf3nowTb4b4b4)Tb4b4b4;
Te6edf3sprintfTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffOK - clock set: %02d:%02d - %d/%d/%d UTCTa5d6ff"Tb4b4b4, Te6edf3dtTb4b4b4.Te6edf3hourTb4b4b4(Tb4b4b4)Tb4b4b4, Te6edf3dtTb4b4b4.Te6edf3minuteTb4b4b4(Tb4b4b4)Tb4b4b4, Te6edf3dtTb4b4b4.Te6edf3dayTb4b4b4(Tb4b4b4)Tb4b4b4, Te6edf3dtTb4b4b4.Te6edf3monthTb4b4b4(Tb4b4b4)Tb4b4b4, Te6edf3dtTb4b4b4.Te6edf3yearTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ff(ERR: clock cannot go backwards)Ta5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3commandTb4b4b4, Ta5d6ff"Ta5d6ffneighborsTa5d6ff"Tb4b4b4, T79c0ff9Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3_callbacksTff7b72-Tff7b72>Te6edf3formatNeighborsReplyTb4b4b4(Te6edf3replyTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3commandTb4b4b4, Ta5d6ff"Ta5d6ffneighbor.remove Ta5d6ff"Tb4b4b4, T79c0ff16Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72const Tffa657charTff7b72* Te6edf3hex Tff7b72= Tff7b72&Te6edf3commandTb4b4b4[T79c0ff16Tb4b4b4]Tb4b4b4;
Tffa657uint8_t Te6edf3pubkeyTb4b4b4[Te6edf3PUB_KEY_SIZETb4b4b4]Tb4b4b4;
Tffa657int Te6edf3hex_len Tff7b72= Te6edf3minTb4b4b4(Tb4b4b4(Tffa657intTb4b4b4)Te6edf3strlenTb4b4b4(Te6edf3hexTb4b4b4)Tb4b4b4, Te6edf3PUB_KEY_SIZETff7b72*T79c0ff2Tb4b4b4)Tb4b4b4;
Tffa657int Te6edf3pubkey_len Tff7b72= Te6edf3hex_len Tff7b72/ T79c0ff2Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3meshTff7b72:Tff7b72:Te6edf3UtilsTff7b72:Tff7b72:Te6edf3fromHexTb4b4b4(Te6edf3pubkeyTb4b4b4, Te6edf3pubkey_lenTb4b4b4, Te6edf3hexTb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3_callbacksTff7b72-Tff7b72>Te6edf3removeNeighborTb4b4b4(Te6edf3pubkeyTb4b4b4, Te6edf3pubkey_lenTb4b4b4)Tb4b4b4;
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffOKTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffERR: bad pubkeyTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3commandTb4b4b4, Ta5d6ff"Ta5d6fftempradio Ta5d6ff"Tb4b4b4, T79c0ff10Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3strcpyTb4b4b4(Te6edf3tmpTb4b4b4, Tff7b72&Te6edf3commandTb4b4b4[T79c0ff10Tb4b4b4]Tb4b4b4)Tb4b4b4;
Tff7b72const Tffa657char Tff7b72*Te6edf3partsTb4b4b4[T79c0ff5Tb4b4b4]Tb4b4b4;
Tffa657int Te6edf3num Tff7b72= Te6edf3meshTff7b72:Tff7b72:Te6edf3UtilsTff7b72:Tff7b72:Te6edf3parseTextPartsTb4b4b4(Te6edf3tmpTb4b4b4, Te6edf3partsTb4b4b4, T79c0ff5Tb4b4b4)Tb4b4b4;
Tffa657float Te6edf3freq Tff7b72= Te6edf3num Tff7b72> T79c0ff0 Tff7b72? Te6edf3strtofTb4b4b4(Te6edf3partsTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4, Tffa657nullptrTb4b4b4) Tff7b72: T79c0ff0.0fTb4b4b4;
Tffa657float Te6edf3bw Tff7b72= Te6edf3num Tff7b72> T79c0ff1 Tff7b72? Te6edf3strtofTb4b4b4(Te6edf3partsTb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4, Tffa657nullptrTb4b4b4) Tff7b72: T79c0ff0.0fTb4b4b4;
Tffa657uint8_t Te6edf3sf Tff7b72= Te6edf3num Tff7b72> T79c0ff2 Tff7b72? Te6edf3atoiTb4b4b4(Te6edf3partsTb4b4b4[T79c0ff2Tb4b4b4]Tb4b4b4) Tff7b72: T79c0ff0Tb4b4b4;
Tffa657uint8_t Te6edf3cr Tff7b72= Te6edf3num Tff7b72> T79c0ff3 Tff7b72? Te6edf3atoiTb4b4b4(Te6edf3partsTb4b4b4[T79c0ff3Tb4b4b4]Tb4b4b4) Tff7b72: T79c0ff0Tb4b4b4;
Tffa657int Te6edf3temp_timeout_mins Tff7b72= Te6edf3num Tff7b72> T79c0ff4 Tff7b72? Te6edf3atoiTb4b4b4(Te6edf3partsTb4b4b4[T79c0ff4Tb4b4b4]Tb4b4b4) Tff7b72: T79c0ff0Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3freq Tff7b72>Tff7b72= T79c0ff150.0f Tff7b72&Tff7b72& Te6edf3freq Tff7b72<Tff7b72= T79c0ff2500.0f Tff7b72&Tff7b72& Te6edf3sf Tff7b72>Tff7b72= T79c0ff5 Tff7b72&Tff7b72& Te6edf3sf Tff7b72<Tff7b72= T79c0ff12 Tff7b72&Tff7b72& Te6edf3cr Tff7b72>Tff7b72= T79c0ff5 Tff7b72&Tff7b72& Te6edf3cr Tff7b72<Tff7b72= T79c0ff8 Tff7b72&Tff7b72& Te6edf3bw Tff7b72>Tff7b72= T79c0ff7.0f Tff7b72&Tff7b72& Te6edf3bw Tff7b72<Tff7b72= T79c0ff500.0f Tff7b72&Tff7b72& Te6edf3temp_timeout_mins Tff7b72> T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3_callbacksTff7b72-Tff7b72>Te6edf3applyTempRadioParamsTb4b4b4(Te6edf3freqTb4b4b4, Te6edf3bwTb4b4b4, Te6edf3sfTb4b4b4, Te6edf3crTb4b4b4, Te6edf3temp_timeout_minsTb4b4b4)Tb4b4b4;
Te6edf3sprintfTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffOK - temp params for %d minsTa5d6ff"Tb4b4b4, Te6edf3temp_timeout_minsTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffError, invalid paramsTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3commandTb4b4b4, Ta5d6ff"Ta5d6ffpassword Ta5d6ff"Tb4b4b4, T79c0ff9Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
T8b949e// change admin password
Te6edf3StrHelperTff7b72:Tff7b72:Te6edf3strncpyTb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3passwordTb4b4b4, Tff7b72&Te6edf3commandTb4b4b4[T79c0ff9Tb4b4b4]Tb4b4b4, Tff7b72sizeofTb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3passwordTb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3savePrefsTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3sprintfTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffpassword now: Ta5d6ff"Tb4b4b4)Tb4b4b4;
Te6edf3StrHelperTff7b72:Tff7b72:Te6edf3strncpyTb4b4b4(Tff7b72&Te6edf3replyTb4b4b4[T79c0ff14Tb4b4b4]Tb4b4b4, Te6edf3_prefsTff7b72-Tff7b72>Te6edf3passwordTb4b4b4, T79c0ff160T79c0ff-15Tb4b4b4)Tb4b4b4; T8b949e// echo back just to let admin know for sure!!
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3commandTb4b4b4, Ta5d6ff"Ta5d6ffclear statsTa5d6ff"Tb4b4b4, T79c0ff11Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3_callbacksTff7b72-Tff7b72>Te6edf3clearStatsTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ff(OK - stats reset)Ta5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3commandTb4b4b4, Ta5d6ff"Ta5d6ffget Ta5d6ff"Tb4b4b4, T79c0ff4Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3handleGetCmdTb4b4b4(Te6edf3sender_timestampTb4b4b4, Te6edf3commandTb4b4b4, Te6edf3replyTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3commandTb4b4b4, Ta5d6ff"Ta5d6ffset Ta5d6ff"Tb4b4b4, T79c0ff4Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3handleSetCmdTb4b4b4(Te6edf3sender_timestampTb4b4b4, Te6edf3commandTb4b4b4, Te6edf3replyTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3sender_timestamp Tff7b72=Tff7b72= T79c0ff0 Tff7b72&Tff7b72& Te6edf3strcmpTb4b4b4(Te6edf3commandTb4b4b4, Ta5d6ff"Ta5d6fferaseTa5d6ff"Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Tffa657bool Te6edf3s Tff7b72= Te6edf3_callbacksTff7b72-Tff7b72>Te6edf3formatFileSystemTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3sprintfTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffFile system erase: %sTa5d6ff"Tb4b4b4, Te6edf3s Tff7b72? Ta5d6ff"Ta5d6ffOKTa5d6ff" Tff7b72: Ta5d6ff"Ta5d6ffErrTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3commandTb4b4b4, Ta5d6ff"Ta5d6ffverTa5d6ff"Tb4b4b4, T79c0ff3Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3sprintfTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ff%s (Build: %s)Ta5d6ff"Tb4b4b4, Te6edf3_callbacksTff7b72-Tff7b72>Te6edf3getFirmwareVerTb4b4b4(Tb4b4b4)Tb4b4b4, Te6edf3_callbacksTff7b72-Tff7b72>Te6edf3getBuildDateTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3commandTb4b4b4, Ta5d6ff"Ta5d6ffboardTa5d6ff"Tb4b4b4, T79c0ff5Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3sprintfTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ff%sTa5d6ff"Tb4b4b4, Te6edf3_boardTff7b72-Tff7b72>Te6edf3getManufacturerNameTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3commandTb4b4b4, Ta5d6ff"Ta5d6ffsensor get Ta5d6ff"Tb4b4b4, T79c0ff11Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72const Tffa657charTff7b72* Te6edf3key Tff7b72= Te6edf3command Tff7b72+ T79c0ff11Tb4b4b4;
Tff7b72const Tffa657charTff7b72* Te6edf3val Tff7b72= Te6edf3_sensorsTff7b72-Tff7b72>Te6edf3getSettingByKeyTb4b4b4(Te6edf3keyTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3val Tff7b72!Tff7b72= Tffa657NULLTb4b4b4) Tb4b4b4{
Te6edf3sprintfTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ff> %sTa5d6ff"Tb4b4b4, Te6edf3valTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffnullTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3commandTb4b4b4, Ta5d6ff"Ta5d6ffsensor set Ta5d6ff"Tb4b4b4, T79c0ff11Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3strcpyTb4b4b4(Te6edf3tmpTb4b4b4, Tff7b72&Te6edf3commandTb4b4b4[T79c0ff11Tb4b4b4]Tb4b4b4)Tb4b4b4;
Tff7b72const Tffa657char Tff7b72*Te6edf3partsTb4b4b4[T79c0ff2Tb4b4b4]Tb4b4b4;
Tffa657int Te6edf3num Tff7b72= Te6edf3meshTff7b72:Tff7b72:Te6edf3UtilsTff7b72:Tff7b72:Te6edf3parseTextPartsTb4b4b4(Te6edf3tmpTb4b4b4, Te6edf3partsTb4b4b4, T79c0ff2Tb4b4b4, Ta5d6ff'Ta5d6ff Ta5d6ff'Tb4b4b4)Tb4b4b4;
Tff7b72const Tffa657char Tff7b72*Te6edf3key Tff7b72= Tb4b4b4(Te6edf3num Tff7b72> T79c0ff0Tb4b4b4) Tff7b72? Te6edf3partsTb4b4b4[T79c0ff0Tb4b4b4] Tff7b72: Ta5d6ff"Ta5d6ff"Tb4b4b4;
Tff7b72const Tffa657char Tff7b72*Te6edf3value Tff7b72= Tb4b4b4(Te6edf3num Tff7b72> T79c0ff1Tb4b4b4) Tff7b72? Te6edf3partsTb4b4b4[T79c0ff1Tb4b4b4] Tff7b72: Ta5d6ff"Ta5d6ffnullTa5d6ff"Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3_sensorsTff7b72-Tff7b72>Te6edf3setSettingValueTb4b4b4(Te6edf3keyTb4b4b4, Te6edf3valueTb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffokTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffcan't find custom varTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3commandTb4b4b4, Ta5d6ff"Ta5d6ffsensor listTa5d6ff"Tb4b4b4, T79c0ff11Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Tffa657charTff7b72* Te6edf3dp Tff7b72= Te6edf3replyTb4b4b4;
Tffa657int Te6edf3start Tff7b72= T79c0ff0Tb4b4b4;
Tffa657int Te6edf3end Tff7b72= Te6edf3_sensorsTff7b72-Tff7b72>Te6edf3getNumSettingsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3strlenTb4b4b4(Te6edf3commandTb4b4b4) Tff7b72> T79c0ff11Tb4b4b4) Tb4b4b4{
Te6edf3start Tff7b72= Te6edf3_atoiTb4b4b4(Te6edf3commandTff7b72+T79c0ff12Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3start Tff7b72>Tff7b72= Te6edf3endTb4b4b4) Tb4b4b4{
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffno custom varTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3sprintfTb4b4b4(Te6edf3dpTb4b4b4, Ta5d6ff"Ta5d6ff%d varsTffea00\nTa5d6ff"Tb4b4b4, Te6edf3endTb4b4b4)Tb4b4b4;
Te6edf3dp Tff7b72= Te6edf3strchrTb4b4b4(Te6edf3dpTb4b4b4, T79c0ff0Tb4b4b4)Tb4b4b4;
Tffa657int Te6edf3iTb4b4b4;
Tff7b72for Tb4b4b4(Te6edf3i Tff7b72= Te6edf3startTb4b4b4; Te6edf3i Tff7b72< Te6edf3end Tff7b72&Tff7b72& Tb4b4b4(Te6edf3dpTff7b72-Te6edf3reply Tff7b72< T79c0ff134Tb4b4b4)Tb4b4b4; Te6edf3iTff7b72+Tff7b72+Tb4b4b4) Tb4b4b4{
Te6edf3sprintfTb4b4b4(Te6edf3dpTb4b4b4, Ta5d6ff"Ta5d6ff%s=%sTffea00\nTa5d6ff"Tb4b4b4,
Te6edf3_sensorsTff7b72-Tff7b72>Te6edf3getSettingNameTb4b4b4(Te6edf3iTb4b4b4)Tb4b4b4,
Te6edf3_sensorsTff7b72-Tff7b72>Te6edf3getSettingValueTb4b4b4(Te6edf3iTb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3dp Tff7b72= Te6edf3strchrTb4b4b4(Te6edf3dpTb4b4b4, T79c0ff0Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3i Tff7b72< Te6edf3endTb4b4b4) Tb4b4b4{
Te6edf3sprintfTb4b4b4(Te6edf3dpTb4b4b4, Ta5d6ff"Ta5d6ff... next:%dTa5d6ff"Tb4b4b4, Te6edf3iTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Tff7b72*Tb4b4b4(Te6edf3dpT79c0ff-1Tb4b4b4) Tff7b72= T79c0ff0Tb4b4b4; T8b949e// remove last CR
Tb4b4b4}
Tb4b4b4}
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3commandTb4b4b4, Ta5d6ff"Ta5d6ffregionTa5d6ff"Tb4b4b4, T79c0ff6Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3handleRegionCmdTb4b4b4(Te6edf3commandTb4b4b4, Te6edf3replyTb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72if ENV_INCLUDE_GPS == 1
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3commandTb4b4b4, Ta5d6ff"Ta5d6ffgps onTa5d6ff"Tb4b4b4, T79c0ff6Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3_sensorsTff7b72-Tff7b72>Te6edf3setSettingValueTb4b4b4(Ta5d6ff"Ta5d6ffgpsTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff1Ta5d6ff"Tb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3_prefsTff7b72-Tff7b72>Te6edf3gps_enabled Tff7b72= T79c0ff1Tb4b4b4;
Te6edf3savePrefsTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffokTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffgps toggle not foundTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3commandTb4b4b4, Ta5d6ff"Ta5d6ffgps offTa5d6ff"Tb4b4b4, T79c0ff7Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3_sensorsTff7b72-Tff7b72>Te6edf3setSettingValueTb4b4b4(Ta5d6ff"Ta5d6ffgpsTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff0Ta5d6ff"Tb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3_prefsTff7b72-Tff7b72>Te6edf3gps_enabled Tff7b72= T79c0ff0Tb4b4b4;
Te6edf3savePrefsTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffokTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffgps toggle not foundTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3commandTb4b4b4, Ta5d6ff"Ta5d6ffgps syncTa5d6ff"Tb4b4b4, T79c0ff8Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3LocationProvider Tff7b72* Te6edf3l Tff7b72= Te6edf3_sensorsTff7b72-Tff7b72>Te6edf3getLocationProviderTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3l Tff7b72!Tff7b72= Tffa657NULLTb4b4b4) Tb4b4b4{
Te6edf3lTff7b72-Tff7b72>Te6edf3syncTimeTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffokTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffgps provider not foundTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3commandTb4b4b4, Ta5d6ff"Ta5d6ffgps setlocTa5d6ff"Tb4b4b4, T79c0ff10Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3_prefsTff7b72-Tff7b72>Te6edf3node_lat Tff7b72= Te6edf3_sensorsTff7b72-Tff7b72>Te6edf3node_latTb4b4b4;
Te6edf3_prefsTff7b72-Tff7b72>Te6edf3node_lon Tff7b72= Te6edf3_sensorsTff7b72-Tff7b72>Te6edf3node_lonTb4b4b4;
Te6edf3savePrefsTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffokTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3commandTb4b4b4, Ta5d6ff"Ta5d6ffgps advertTa5d6ff"Tb4b4b4, T79c0ff10Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3strlenTb4b4b4(Te6edf3commandTb4b4b4) Tff7b72=Tff7b72= T79c0ff10Tb4b4b4) Tb4b4b4{
Tff7b72switch Tb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3advert_loc_policyTb4b4b4) Tb4b4b4{
Tff7b72case Tff7b72ADVERT_LOC_NONETb4b4b4:
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ff> noneTa5d6ff"Tb4b4b4)Tb4b4b4;
Tff7b72breakTb4b4b4;
Tff7b72case Tff7b72ADVERT_LOC_PREFSTb4b4b4:
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ff> prefsTa5d6ff"Tb4b4b4)Tb4b4b4;
Tff7b72breakTb4b4b4;
Tff7b72case Tff7b72ADVERT_LOC_SHARETb4b4b4:
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ff> shareTa5d6ff"Tb4b4b4)Tb4b4b4;
Tff7b72breakTb4b4b4;
Tff7b72defaultTff7b72:
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6fferrorTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3commandTff7b72+T79c0ff11Tb4b4b4, Ta5d6ff"Ta5d6ffnoneTa5d6ff"Tb4b4b4, T79c0ff4Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3_prefsTff7b72-Tff7b72>Te6edf3advert_loc_policy Tff7b72= Te6edf3ADVERT_LOC_NONETb4b4b4;
Te6edf3savePrefsTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffokTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3commandTff7b72+T79c0ff11Tb4b4b4, Ta5d6ff"Ta5d6ffshareTa5d6ff"Tb4b4b4, T79c0ff5Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3_prefsTff7b72-Tff7b72>Te6edf3advert_loc_policy Tff7b72= Te6edf3ADVERT_LOC_SHARETb4b4b4;
Te6edf3savePrefsTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffokTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3commandTff7b72+T79c0ff11Tb4b4b4, Ta5d6ff"Ta5d6ffprefsTa5d6ff"Tb4b4b4, T79c0ff5Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3_prefsTff7b72-Tff7b72>Te6edf3advert_loc_policy Tff7b72= Te6edf3ADVERT_LOC_PREFSTb4b4b4;
Te6edf3savePrefsTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffokTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6fferrorTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3commandTb4b4b4, Ta5d6ff"Ta5d6ffgpsTa5d6ff"Tb4b4b4, T79c0ff3Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3LocationProvider Tff7b72* Te6edf3l Tff7b72= Te6edf3_sensorsTff7b72-Tff7b72>Te6edf3getLocationProviderTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3l Tff7b72!Tff7b72= Tffa657NULLTb4b4b4) Tb4b4b4{
Tffa657bool Te6edf3enabled Tff7b72= Te6edf3lTff7b72-Tff7b72>Te6edf3isEnabledTb4b4b4(Tb4b4b4)Tb4b4b4; T8b949e// is EN pin on ?
Tffa657bool Te6edf3fix Tff7b72= Te6edf3lTff7b72-Tff7b72>Te6edf3isValidTb4b4b4(Tb4b4b4)Tb4b4b4; T8b949e// has fix ?
Tffa657int Te6edf3sats Tff7b72= Te6edf3lTff7b72-Tff7b72>Te6edf3satellitesCountTb4b4b4(Tb4b4b4)Tb4b4b4;
Tffa657bool Te6edf3active Tff7b72= Tff7b72!Te6edf3strcmpTb4b4b4(Te6edf3_sensorsTff7b72-Tff7b72>Te6edf3getSettingByKeyTb4b4b4(Ta5d6ff"Ta5d6ffgpsTa5d6ff"Tb4b4b4)Tb4b4b4, Ta5d6ff"Ta5d6ff1Ta5d6ff"Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3enabledTb4b4b4) Tb4b4b4{
Te6edf3sprintfTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffon, %s, %s, %d satsTa5d6ff"Tb4b4b4,
Te6edf3activeTff7b72?Ta5d6ff"Ta5d6ffactiveTa5d6ff"Tff7b72:Ta5d6ff"Ta5d6ffdeactivatedTa5d6ff"Tb4b4b4,
Te6edf3fixTff7b72?Ta5d6ff"Ta5d6fffixTa5d6ff"Tff7b72:Ta5d6ff"Ta5d6ffno fixTa5d6ff"Tb4b4b4,
Te6edf3satsTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffoffTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffCan't find GPSTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72#Tff7b72endif
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3commandTb4b4b4, Ta5d6ff"Ta5d6ffpowersaving onTa5d6ff"Tb4b4b4, T79c0ff14Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72if defined(NRF52_PLATFORM)
Te6edf3_prefsTff7b72-Tff7b72>Te6edf3powersaving_enabled Tff7b72= T79c0ff1Tb4b4b4;
Te6edf3savePrefsTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffon - Immediate effectTa5d6ff"Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72elif defined(ESP32) && !defined(WITH_BRIDGE)
Te6edf3_prefsTff7b72-Tff7b72>Te6edf3powersaving_enabled Tff7b72= T79c0ff1Tb4b4b4;
Te6edf3savePrefsTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffon - After 2 minutesTa5d6ff"Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72elif defined(WITH_BRIDGE)
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffBridge not supportedTa5d6ff"Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72else
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffBoard not supportedTa5d6ff"Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3commandTb4b4b4, Ta5d6ff"Ta5d6ffpowersaving offTa5d6ff"Tb4b4b4, T79c0ff15Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3_prefsTff7b72-Tff7b72>Te6edf3powersaving_enabled Tff7b72= T79c0ff0Tb4b4b4;
Te6edf3savePrefsTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffoffTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3commandTb4b4b4, Ta5d6ff"Ta5d6ffpowersavingTa5d6ff"Tb4b4b4, T79c0ff11Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3powersaving_enabledTb4b4b4) Tb4b4b4{
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffonTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffoffTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3commandTb4b4b4, Ta5d6ff"Ta5d6fflog startTa5d6ff"Tb4b4b4, T79c0ff9Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3_callbacksTff7b72-Tff7b72>Te6edf3setLoggingOnTb4b4b4(Tffa657trueTb4b4b4)Tb4b4b4;
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ff logging onTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3commandTb4b4b4, Ta5d6ff"Ta5d6fflog stopTa5d6ff"Tb4b4b4, T79c0ff8Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3_callbacksTff7b72-Tff7b72>Te6edf3setLoggingOnTb4b4b4(Tffa657falseTb4b4b4)Tb4b4b4;
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ff logging offTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3commandTb4b4b4, Ta5d6ff"Ta5d6fflog eraseTa5d6ff"Tb4b4b4, T79c0ff9Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3_callbacksTff7b72-Tff7b72>Te6edf3eraseLogFileTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ff log erasedTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3sender_timestamp Tff7b72=Tff7b72= T79c0ff0 Tff7b72&Tff7b72& Te6edf3memcmpTb4b4b4(Te6edf3commandTb4b4b4, Ta5d6ff"Ta5d6fflogTa5d6ff"Tb4b4b4, T79c0ff3Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3_callbacksTff7b72-Tff7b72>Te6edf3dumpLogFileTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ff EOFTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3sender_timestamp Tff7b72=Tff7b72= T79c0ff0 Tff7b72&Tff7b72& Te6edf3memcmpTb4b4b4(Te6edf3commandTb4b4b4, Ta5d6ff"Ta5d6ffstats-packetsTa5d6ff"Tb4b4b4, T79c0ff13Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0 Tff7b72&Tff7b72& Tb4b4b4(Te6edf3commandTb4b4b4[T79c0ff13Tb4b4b4] Tff7b72=Tff7b72= T79c0ff0 Tff7b72|Tff7b72| Te6edf3commandTb4b4b4[T79c0ff13Tb4b4b4] Tff7b72=Tff7b72= Ta5d6ff'Ta5d6ff Ta5d6ff'Tb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3_callbacksTff7b72-Tff7b72>Te6edf3formatPacketStatsReplyTb4b4b4(Te6edf3replyTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3sender_timestamp Tff7b72=Tff7b72= T79c0ff0 Tff7b72&Tff7b72& Te6edf3memcmpTb4b4b4(Te6edf3commandTb4b4b4, Ta5d6ff"Ta5d6ffstats-radioTa5d6ff"Tb4b4b4, T79c0ff11Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0 Tff7b72&Tff7b72& Tb4b4b4(Te6edf3commandTb4b4b4[T79c0ff11Tb4b4b4] Tff7b72=Tff7b72= T79c0ff0 Tff7b72|Tff7b72| Te6edf3commandTb4b4b4[T79c0ff11Tb4b4b4] Tff7b72=Tff7b72= Ta5d6ff'Ta5d6ff Ta5d6ff'Tb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3_callbacksTff7b72-Tff7b72>Te6edf3formatRadioStatsReplyTb4b4b4(Te6edf3replyTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3sender_timestamp Tff7b72=Tff7b72= T79c0ff0 Tff7b72&Tff7b72& Te6edf3memcmpTb4b4b4(Te6edf3commandTb4b4b4, Ta5d6ff"Ta5d6ffstats-coreTa5d6ff"Tb4b4b4, T79c0ff10Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0 Tff7b72&Tff7b72& Tb4b4b4(Te6edf3commandTb4b4b4[T79c0ff10Tb4b4b4] Tff7b72=Tff7b72= T79c0ff0 Tff7b72|Tff7b72| Te6edf3commandTb4b4b4[T79c0ff10Tb4b4b4] Tff7b72=Tff7b72= Ta5d6ff'Ta5d6ff Ta5d6ff'Tb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3_callbacksTff7b72-Tff7b72>Te6edf3formatStatsReplyTb4b4b4(Te6edf3replyTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffUnknown commandTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}

Tffa657void Td2a8ffCommonCLI::handleSetCmdTb4b4b4(Tffa657uint32_t Te6edf3sender_timestampTb4b4b4, Tffa657charTff7b72* Te6edf3commandTb4b4b4, Tffa657charTff7b72* Te6edf3replyTb4b4b4) Tb4b4b4{
Tff7b72const Tffa657charTff7b72* Te6edf3config Tff7b72= Tff7b72&Te6edf3commandTb4b4b4[T79c0ff4Tb4b4b4]Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6ffdutycycle Ta5d6ff"Tb4b4b4, T79c0ff10Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Tffa657float Te6edf3dc Tff7b72= Te6edf3atofTb4b4b4(Tff7b72&Te6edf3configTb4b4b4[T79c0ff10Tb4b4b4]Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3dc Tff7b72< T79c0ff1 Tff7b72|Tff7b72| Te6edf3dc Tff7b72> T79c0ff100Tb4b4b4) Tb4b4b4{
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffERROR: dutycycle must be 1-100Ta5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3_prefsTff7b72-Tff7b72>Te6edf3airtime_factor Tff7b72= Tb4b4b4(T79c0ff100.0f Tff7b72/ Te6edf3dcTb4b4b4) Tff7b72- T79c0ff1.0fTb4b4b4;
Te6edf3savePrefsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tffa657float Te6edf3actual Tff7b72= T79c0ff100.0f Tff7b72/ Tb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3airtime_factor Tff7b72+ T79c0ff1.0fTb4b4b4)Tb4b4b4;
Tffa657int Te6edf3a_int Tff7b72= Tb4b4b4(Tffa657intTb4b4b4)Te6edf3actualTb4b4b4;
Tffa657int Te6edf3a_frac Tff7b72= Tb4b4b4(Tffa657intTb4b4b4)Tb4b4b4(Tb4b4b4(Te6edf3actual Tff7b72- Te6edf3a_intTb4b4b4) Tff7b72* T79c0ff10.0f Tff7b72+ T79c0ff0.5fTb4b4b4)Tb4b4b4;
Te6edf3sprintfTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffOK - %d.%d%%Ta5d6ff"Tb4b4b4, Te6edf3a_intTb4b4b4, Te6edf3a_fracTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6ffaf Ta5d6ff"Tb4b4b4, T79c0ff3Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3_prefsTff7b72-Tff7b72>Te6edf3airtime_factor Tff7b72= Te6edf3atofTb4b4b4(Tff7b72&Te6edf3configTb4b4b4[T79c0ff3Tb4b4b4]Tb4b4b4)Tb4b4b4;
Te6edf3savePrefsTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffOKTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6ffint.thresh Ta5d6ff"Tb4b4b4, T79c0ff11Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3_prefsTff7b72-Tff7b72>Te6edf3interference_threshold Tff7b72= Te6edf3atoiTb4b4b4(Tff7b72&Te6edf3configTb4b4b4[T79c0ff11Tb4b4b4]Tb4b4b4)Tb4b4b4;
Te6edf3savePrefsTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffOKTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6ffcad Ta5d6ff"Tb4b4b4, T79c0ff4Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3_prefsTff7b72-Tff7b72>Te6edf3cad_enabled Tff7b72= Te6edf3memcmpTb4b4b4(Tff7b72&Te6edf3configTb4b4b4[T79c0ff4Tb4b4b4]Tb4b4b4, Ta5d6ff"Ta5d6ffonTa5d6ff"Tb4b4b4, T79c0ff2Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4;
Te6edf3savePrefsTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffOKTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6ffagc.reset.interval Ta5d6ff"Tb4b4b4, T79c0ff19Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3_prefsTff7b72-Tff7b72>Te6edf3agc_reset_interval Tff7b72= Te6edf3atoiTb4b4b4(Tff7b72&Te6edf3configTb4b4b4[T79c0ff19Tb4b4b4]Tb4b4b4) Tff7b72/ T79c0ff4Tb4b4b4;
Te6edf3savePrefsTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3sprintfTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffOK - interval rounded to %dTa5d6ff"Tb4b4b4, Tb4b4b4(Tb4b4b4(Tffa657uint32_tTb4b4b4) Te6edf3_prefsTff7b72-Tff7b72>Te6edf3agc_reset_intervalTb4b4b4) Tff7b72* T79c0ff4Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6ffmulti.acks Ta5d6ff"Tb4b4b4, T79c0ff11Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3_prefsTff7b72-Tff7b72>Te6edf3multi_acks Tff7b72= Te6edf3atoiTb4b4b4(Tff7b72&Te6edf3configTb4b4b4[T79c0ff11Tb4b4b4]Tb4b4b4)Tb4b4b4;
Te6edf3savePrefsTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffOKTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6ffallow.read.only Ta5d6ff"Tb4b4b4, T79c0ff16Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3_prefsTff7b72-Tff7b72>Te6edf3allow_read_only Tff7b72= Te6edf3memcmpTb4b4b4(Tff7b72&Te6edf3configTb4b4b4[T79c0ff16Tb4b4b4]Tb4b4b4, Ta5d6ff"Ta5d6ffonTa5d6ff"Tb4b4b4, T79c0ff2Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4;
Te6edf3savePrefsTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffOKTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6ffflood.advert.interval Ta5d6ff"Tb4b4b4, T79c0ff22Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Tffa657int Te6edf3hours Tff7b72= Te6edf3_atoiTb4b4b4(Tff7b72&Te6edf3configTb4b4b4[T79c0ff22Tb4b4b4]Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tb4b4b4(Te6edf3hours Tff7b72> T79c0ff0 Tff7b72&Tff7b72& Te6edf3hours Tff7b72< T79c0ff3Tb4b4b4) Tff7b72|Tff7b72| Tb4b4b4(Te6edf3hours Tff7b72> T79c0ff168Tb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffError: interval range is 3-168 hoursTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3_prefsTff7b72-Tff7b72>Te6edf3flood_advert_interval Tff7b72= Tb4b4b4(Tffa657uint8_tTb4b4b4)Tb4b4b4(Te6edf3hoursTb4b4b4)Tb4b4b4;
Te6edf3_callbacksTff7b72-Tff7b72>Te6edf3updateFloodAdvertTimerTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3savePrefsTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffOKTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6ffadvert.interval Ta5d6ff"Tb4b4b4, T79c0ff16Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Tffa657int Te6edf3mins Tff7b72= Te6edf3_atoiTb4b4b4(Tff7b72&Te6edf3configTb4b4b4[T79c0ff16Tb4b4b4]Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tb4b4b4(Te6edf3mins Tff7b72> T79c0ff0 Tff7b72&Tff7b72& Te6edf3mins Tff7b72< Te6edf3MIN_LOCAL_ADVERT_INTERVALTb4b4b4) Tff7b72|Tff7b72| Tb4b4b4(Te6edf3mins Tff7b72> T79c0ff240Tb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3sprintfTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffError: interval range is %d-240 minutesTa5d6ff"Tb4b4b4, Te6edf3MIN_LOCAL_ADVERT_INTERVALTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3_prefsTff7b72-Tff7b72>Te6edf3advert_interval Tff7b72= Tb4b4b4(Tffa657uint8_tTb4b4b4)Tb4b4b4(Te6edf3mins Tff7b72/ T79c0ff2Tb4b4b4)Tb4b4b4;
Te6edf3_callbacksTff7b72-Tff7b72>Te6edf3updateAdvertTimerTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3savePrefsTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffOKTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6ffguest.password Ta5d6ff"Tb4b4b4, T79c0ff15Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3StrHelperTff7b72:Tff7b72:Te6edf3strncpyTb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3guest_passwordTb4b4b4, Tff7b72&Te6edf3configTb4b4b4[T79c0ff15Tb4b4b4]Tb4b4b4, Tff7b72sizeofTb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3guest_passwordTb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3savePrefsTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffOKTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6ffprv.key Ta5d6ff"Tb4b4b4, T79c0ff8Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Tffa657uint8_t Te6edf3prv_keyTb4b4b4[Te6edf3PRV_KEY_SIZETb4b4b4]Tb4b4b4;
Tffa657bool Te6edf3success Tff7b72= Te6edf3meshTff7b72:Tff7b72:Te6edf3UtilsTff7b72:Tff7b72:Te6edf3fromHexTb4b4b4(Te6edf3prv_keyTb4b4b4, Te6edf3PRV_KEY_SIZETb4b4b4, Tff7b72&Te6edf3configTb4b4b4[T79c0ff8Tb4b4b4]Tb4b4b4)Tb4b4b4;
T8b949e// only allow rekey if key is valid
Tff7b72if Tb4b4b4(Te6edf3success Tff7b72&Tff7b72& Te6edf3meshTff7b72:Tff7b72:Te6edf3LocalIdentityTff7b72:Tff7b72:Te6edf3validatePrivateKeyTb4b4b4(Te6edf3prv_keyTb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3meshTff7b72:Tff7b72:Te6edf3LocalIdentity Te6edf3new_idTb4b4b4;
Te6edf3new_idTb4b4b4.Te6edf3readFromTb4b4b4(Te6edf3prv_keyTb4b4b4, Te6edf3PRV_KEY_SIZETb4b4b4)Tb4b4b4;
Te6edf3_callbacksTff7b72-Tff7b72>Te6edf3saveIdentityTb4b4b4(Te6edf3new_idTb4b4b4)Tb4b4b4;
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffOK, reboot to apply! New pubkey: Ta5d6ff"Tb4b4b4)Tb4b4b4;
Te6edf3meshTff7b72:Tff7b72:Te6edf3UtilsTff7b72:Tff7b72:Te6edf3toHexTb4b4b4(Tff7b72&Te6edf3replyTb4b4b4[T79c0ff33Tb4b4b4]Tb4b4b4, Te6edf3new_idTb4b4b4.Te6edf3pub_keyTb4b4b4, Te6edf3PUB_KEY_SIZETb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffError, bad keyTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6ffname Ta5d6ff"Tb4b4b4, T79c0ff5Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3isValidNameTb4b4b4(Tff7b72&Te6edf3configTb4b4b4[T79c0ff5Tb4b4b4]Tb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3StrHelperTff7b72:Tff7b72:Te6edf3strncpyTb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3node_nameTb4b4b4, Tff7b72&Te6edf3configTb4b4b4[T79c0ff5Tb4b4b4]Tb4b4b4, Tff7b72sizeofTb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3node_nameTb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3savePrefsTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffOKTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffError, bad charsTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6ffrepeat Ta5d6ff"Tb4b4b4, T79c0ff7Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3_prefsTff7b72-Tff7b72>Te6edf3disable_fwd Tff7b72= Te6edf3memcmpTb4b4b4(Tff7b72&Te6edf3configTb4b4b4[T79c0ff7Tb4b4b4]Tb4b4b4, Ta5d6ff"Ta5d6ffoffTa5d6ff"Tb4b4b4, T79c0ff3Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4;
Te6edf3savePrefsTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Te6edf3_prefsTff7b72-Tff7b72>Te6edf3disable_fwd Tff7b72? Ta5d6ff"Ta5d6ffOK - repeat is now OFFTa5d6ff" Tff7b72: Ta5d6ff"Ta5d6ffOK - repeat is now ONTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6ffradio.rxgain Ta5d6ff"Tb4b4b4, T79c0ff13Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Tffa657bool Te6edf3enabled Tff7b72= Te6edf3memcmpTb4b4b4(Tff7b72&Te6edf3configTb4b4b4[T79c0ff13Tb4b4b4]Tb4b4b4, Ta5d6ff"Ta5d6ffonTa5d6ff"Tb4b4b4, T79c0ff2Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4;
Te6edf3_prefsTff7b72-Tff7b72>Te6edf3rx_boosted_gain Tff7b72= Te6edf3enabledTb4b4b4;
Te6edf3savePrefsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3_callbacksTff7b72-Tff7b72>Te6edf3setRxBoostedGainTb4b4b4(Te6edf3enabledTb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffOKTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffError: unsupportedTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6ffradio.fem.rxgain Ta5d6ff"Tb4b4b4, T79c0ff17Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3_boardTff7b72-Tff7b72>Te6edf3canControlLoRaFemLnaTb4b4b4(Tb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffError: unsupportedTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Tff7b72&Te6edf3configTb4b4b4[T79c0ff17Tb4b4b4]Tb4b4b4, Ta5d6ff"Ta5d6ffonTa5d6ff"Tb4b4b4, T79c0ff2Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3_boardTff7b72-Tff7b72>Te6edf3setLoRaFemLnaEnabledTb4b4b4(Tffa657trueTb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3_prefsTff7b72-Tff7b72>Te6edf3radio_fem_rxgain Tff7b72= T79c0ff1Tb4b4b4;
Te6edf3savePrefsTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffOK - LoRa FEM RX gain onTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffError: failed to apply LoRa FEM RX gainTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Tff7b72&Te6edf3configTb4b4b4[T79c0ff17Tb4b4b4]Tb4b4b4, Ta5d6ff"Ta5d6ffoffTa5d6ff"Tb4b4b4, T79c0ff3Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3_boardTff7b72-Tff7b72>Te6edf3setLoRaFemLnaEnabledTb4b4b4(Tffa657falseTb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3_prefsTff7b72-Tff7b72>Te6edf3radio_fem_rxgain Tff7b72= T79c0ff0Tb4b4b4;
Te6edf3savePrefsTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffOK - LoRa FEM RX gain offTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffError: failed to apply LoRa FEM RX gainTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffError: state must be on or offTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6ffradio.fem.txgain Ta5d6ff"Tb4b4b4, T79c0ff17Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3_boardTff7b72-Tff7b72>Te6edf3canControlLoRaFemPaGainTb4b4b4(Tb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffError: unsupportedTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Tff7b72&Te6edf3configTb4b4b4[T79c0ff17Tb4b4b4]Tb4b4b4, Ta5d6ff"Ta5d6ffonTa5d6ff"Tb4b4b4, T79c0ff2Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3_boardTff7b72-Tff7b72>Te6edf3setLoRaFemPaGainEnabledTb4b4b4(Tffa657trueTb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3_prefsTff7b72-Tff7b72>Te6edf3radio_fem_txgain Tff7b72= T79c0ff1Tb4b4b4;
Te6edf3savePrefsTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffOK - LoRa FEM TX gain onTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffError: failed to apply LoRa FEM TX gainTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Tff7b72&Te6edf3configTb4b4b4[T79c0ff17Tb4b4b4]Tb4b4b4, Ta5d6ff"Ta5d6ffoffTa5d6ff"Tb4b4b4, T79c0ff3Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3_boardTff7b72-Tff7b72>Te6edf3setLoRaFemPaGainEnabledTb4b4b4(Tffa657falseTb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3_prefsTff7b72-Tff7b72>Te6edf3radio_fem_txgain Tff7b72= T79c0ff0Tb4b4b4;
Te6edf3savePrefsTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffOK - LoRa FEM TX gain offTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffError: failed to apply LoRa FEM TX gainTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffError: state must be on or offTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6ffradio Ta5d6ff"Tb4b4b4, T79c0ff6Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3strcpyTb4b4b4(Te6edf3tmpTb4b4b4, Tff7b72&Te6edf3configTb4b4b4[T79c0ff6Tb4b4b4]Tb4b4b4)Tb4b4b4;
Tff7b72const Tffa657char Tff7b72*Te6edf3partsTb4b4b4[T79c0ff4Tb4b4b4]Tb4b4b4;
Tffa657int Te6edf3num Tff7b72= Te6edf3meshTff7b72:Tff7b72:Te6edf3UtilsTff7b72:Tff7b72:Te6edf3parseTextPartsTb4b4b4(Te6edf3tmpTb4b4b4, Te6edf3partsTb4b4b4, T79c0ff4Tb4b4b4)Tb4b4b4;
Tffa657float Te6edf3freq Tff7b72= Te6edf3num Tff7b72> T79c0ff0 Tff7b72? Te6edf3strtofTb4b4b4(Te6edf3partsTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4, Tffa657nullptrTb4b4b4) Tff7b72: T79c0ff0.0fTb4b4b4;
Tffa657float Te6edf3bw Tff7b72= Te6edf3num Tff7b72> T79c0ff1 Tff7b72? Te6edf3strtofTb4b4b4(Te6edf3partsTb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4, Tffa657nullptrTb4b4b4) Tff7b72: T79c0ff0.0fTb4b4b4;
Tffa657uint8_t Te6edf3sf Tff7b72= Te6edf3num Tff7b72> T79c0ff2 Tff7b72? Te6edf3atoiTb4b4b4(Te6edf3partsTb4b4b4[T79c0ff2Tb4b4b4]Tb4b4b4) Tff7b72: T79c0ff0Tb4b4b4;
Tffa657uint8_t Te6edf3cr Tff7b72= Te6edf3num Tff7b72> T79c0ff3 Tff7b72? Te6edf3atoiTb4b4b4(Te6edf3partsTb4b4b4[T79c0ff3Tb4b4b4]Tb4b4b4) Tff7b72: T79c0ff0Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3freq Tff7b72>Tff7b72= T79c0ff150.0f Tff7b72&Tff7b72& Te6edf3freq Tff7b72<Tff7b72= T79c0ff2500.0f Tff7b72&Tff7b72& Te6edf3sf Tff7b72>Tff7b72= T79c0ff5 Tff7b72&Tff7b72& Te6edf3sf Tff7b72<Tff7b72= T79c0ff12 Tff7b72&Tff7b72& Te6edf3cr Tff7b72>Tff7b72= T79c0ff5 Tff7b72&Tff7b72& Te6edf3cr Tff7b72<Tff7b72= T79c0ff8 Tff7b72&Tff7b72& Te6edf3bw Tff7b72>Tff7b72= T79c0ff7.0f Tff7b72&Tff7b72& Te6edf3bw Tff7b72<Tff7b72= T79c0ff500.0fTb4b4b4) Tb4b4b4{
Te6edf3_prefsTff7b72-Tff7b72>Te6edf3sf Tff7b72= Te6edf3sfTb4b4b4;
Te6edf3_prefsTff7b72-Tff7b72>Te6edf3cr Tff7b72= Te6edf3crTb4b4b4;
Te6edf3_prefsTff7b72-Tff7b72>Te6edf3freq Tff7b72= Te6edf3freqTb4b4b4;
Te6edf3_prefsTff7b72-Tff7b72>Te6edf3bw Tff7b72= Te6edf3bwTb4b4b4;
Te6edf3_callbacksTff7b72-Tff7b72>Te6edf3savePrefsTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffOK - reboot to applyTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffError, invalid radio paramsTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6fflat Ta5d6ff"Tb4b4b4, T79c0ff4Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3_prefsTff7b72-Tff7b72>Te6edf3node_lat Tff7b72= Te6edf3atofTb4b4b4(Tff7b72&Te6edf3configTb4b4b4[T79c0ff4Tb4b4b4]Tb4b4b4)Tb4b4b4;
Te6edf3savePrefsTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffOKTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6fflon Ta5d6ff"Tb4b4b4, T79c0ff4Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3_prefsTff7b72-Tff7b72>Te6edf3node_lon Tff7b72= Te6edf3atofTb4b4b4(Tff7b72&Te6edf3configTb4b4b4[T79c0ff4Tb4b4b4]Tb4b4b4)Tb4b4b4;
Te6edf3savePrefsTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffOKTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6ffrxdelay Ta5d6ff"Tb4b4b4, T79c0ff8Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Tffa657float Te6edf3db Tff7b72= Te6edf3atofTb4b4b4(Tff7b72&Te6edf3configTb4b4b4[T79c0ff8Tb4b4b4]Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3db Tff7b72>Tff7b72= T79c0ff0 Tff7b72&Tff7b72& Te6edf3db Tff7b72<Tff7b72= T79c0ff20.0fTb4b4b4) Tb4b4b4{
Te6edf3_prefsTff7b72-Tff7b72>Te6edf3rx_delay_base Tff7b72= Te6edf3dbTb4b4b4;
Te6edf3savePrefsTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffOKTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffError, must be 0-20Ta5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6fftxdelay Ta5d6ff"Tb4b4b4, T79c0ff8Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Tffa657float Te6edf3f Tff7b72= Te6edf3atofTb4b4b4(Tff7b72&Te6edf3configTb4b4b4[T79c0ff8Tb4b4b4]Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3f Tff7b72>Tff7b72= T79c0ff0 Tff7b72&Tff7b72& Te6edf3f Tff7b72<Tff7b72= T79c0ff2.0fTb4b4b4) Tb4b4b4{
Te6edf3_prefsTff7b72-Tff7b72>Te6edf3tx_delay_factor Tff7b72= Te6edf3fTb4b4b4;
Te6edf3savePrefsTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffOKTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffError, must be 0-2Ta5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6ffflood.max.unscoped Ta5d6ff"Tb4b4b4, T79c0ff19Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Tffa657uint8_t Te6edf3m Tff7b72= Te6edf3atoiTb4b4b4(Tff7b72&Te6edf3configTb4b4b4[T79c0ff19Tb4b4b4]Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3m Tff7b72<Tff7b72= T79c0ff64Tb4b4b4) Tb4b4b4{
Te6edf3_prefsTff7b72-Tff7b72>Te6edf3flood_max_unscoped Tff7b72= Te6edf3mTb4b4b4;
Te6edf3savePrefsTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffOKTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffError, max 64Ta5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6ffflood.max.advert Ta5d6ff"Tb4b4b4, T79c0ff17Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Tffa657uint8_t Te6edf3m Tff7b72= Te6edf3atoiTb4b4b4(Tff7b72&Te6edf3configTb4b4b4[T79c0ff17Tb4b4b4]Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3m Tff7b72<Tff7b72= T79c0ff64Tb4b4b4) Tb4b4b4{
Te6edf3_prefsTff7b72-Tff7b72>Te6edf3flood_max_advert Tff7b72= Te6edf3mTb4b4b4;
Te6edf3savePrefsTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffOKTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffError, max 64Ta5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6ffflood.max Ta5d6ff"Tb4b4b4, T79c0ff10Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Tffa657uint8_t Te6edf3m Tff7b72= Te6edf3atoiTb4b4b4(Tff7b72&Te6edf3configTb4b4b4[T79c0ff10Tb4b4b4]Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3m Tff7b72<Tff7b72= T79c0ff64Tb4b4b4) Tb4b4b4{
Te6edf3_prefsTff7b72-Tff7b72>Te6edf3flood_max Tff7b72= Te6edf3mTb4b4b4;
Te6edf3savePrefsTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffOKTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffError, max 64Ta5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6ffdirect.txdelay Ta5d6ff"Tb4b4b4, T79c0ff15Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Tffa657float Te6edf3f Tff7b72= Te6edf3atofTb4b4b4(Tff7b72&Te6edf3configTb4b4b4[T79c0ff15Tb4b4b4]Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3f Tff7b72>Tff7b72= T79c0ff0 Tff7b72&Tff7b72& Te6edf3f Tff7b72<Tff7b72= T79c0ff2.0fTb4b4b4) Tb4b4b4{
Te6edf3_prefsTff7b72-Tff7b72>Te6edf3direct_tx_delay_factor Tff7b72= Te6edf3fTb4b4b4;
Te6edf3savePrefsTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffOKTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffError, must be 0-2Ta5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6ffowner.info Ta5d6ff"Tb4b4b4, T79c0ff11Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3config Tff7b72+Tff7b72= T79c0ff11Tb4b4b4;
Tffa657char Tff7b72*Te6edf3dp Tff7b72= Te6edf3_prefsTff7b72-Tff7b72>Te6edf3owner_infoTb4b4b4;
Tff7b72while Tb4b4b4(Tff7b72*Te6edf3config Tff7b72&Tff7b72& Te6edf3dp Tff7b72- Te6edf3_prefsTff7b72-Tff7b72>Te6edf3owner_info Tff7b72< Tff7b72sizeofTb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3owner_infoTb4b4b4)T79c0ff-1Tb4b4b4) Tb4b4b4{
Tff7b72*Te6edf3dpTff7b72+Tff7b72+ Tff7b72= Tb4b4b4(Tff7b72*Te6edf3config Tff7b72=Tff7b72= Ta5d6ff'Ta5d6ff|Ta5d6ff'Tb4b4b4) Tff7b72? Ta5d6ff'Ta5d6ff\nTa5d6ff' Tff7b72: Tff7b72*Te6edf3configTb4b4b4; T8b949e// translate '|' to newline chars
Te6edf3configTff7b72+Tff7b72+Tb4b4b4;
Tb4b4b4}
Tff7b72*Te6edf3dp Tff7b72= T79c0ff0Tb4b4b4;
Te6edf3savePrefsTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffOKTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6ffpath.hash.mode Ta5d6ff"Tb4b4b4, T79c0ff15Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3config Tff7b72+Tff7b72= T79c0ff15Tb4b4b4;
Tffa657uint8_t Te6edf3mode Tff7b72= Te6edf3atoiTb4b4b4(Te6edf3configTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3mode Tff7b72< T79c0ff3Tb4b4b4) Tb4b4b4{
Te6edf3_prefsTff7b72-Tff7b72>Te6edf3path_hash_mode Tff7b72= Te6edf3modeTb4b4b4;
Te6edf3savePrefsTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffOKTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffError, must be 0,1, or 2Ta5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6ffloop.detect Ta5d6ff"Tb4b4b4, T79c0ff12Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3config Tff7b72+Tff7b72= T79c0ff12Tb4b4b4;
Tffa657uint8_t Te6edf3modeTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6ffoffTa5d6ff"Tb4b4b4, T79c0ff3Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3mode Tff7b72= Te6edf3LOOP_DETECT_OFFTb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6ffminimalTa5d6ff"Tb4b4b4, T79c0ff7Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3mode Tff7b72= Te6edf3LOOP_DETECT_MINIMALTb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6ffmoderateTa5d6ff"Tb4b4b4, T79c0ff8Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3mode Tff7b72= Te6edf3LOOP_DETECT_MODERATETb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6ffstrictTa5d6ff"Tb4b4b4, T79c0ff6Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3mode Tff7b72= Te6edf3LOOP_DETECT_STRICTTb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3mode Tff7b72= T79c0ff0xFFTb4b4b4;
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffError, must be: off, minimal, moderate, or strictTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3mode Tff7b72!Tff7b72= T79c0ff0xFFTb4b4b4) Tb4b4b4{
Te6edf3_prefsTff7b72-Tff7b72>Te6edf3loop_detect Tff7b72= Te6edf3modeTb4b4b4;
Te6edf3savePrefsTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffOKTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6fftx Ta5d6ff"Tb4b4b4, T79c0ff3Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3_prefsTff7b72-Tff7b72>Te6edf3tx_power_dbm Tff7b72= Te6edf3atoiTb4b4b4(Tff7b72&Te6edf3configTb4b4b4[T79c0ff3Tb4b4b4]Tb4b4b4)Tb4b4b4;
Te6edf3savePrefsTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3_callbacksTff7b72-Tff7b72>Te6edf3setTxPowerTb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3tx_power_dbmTb4b4b4)Tb4b4b4;
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffOKTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3sender_timestamp Tff7b72=Tff7b72= T79c0ff0 Tff7b72&Tff7b72& Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6fffreq Ta5d6ff"Tb4b4b4, T79c0ff5Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3_prefsTff7b72-Tff7b72>Te6edf3freq Tff7b72= Te6edf3atofTb4b4b4(Tff7b72&Te6edf3configTb4b4b4[T79c0ff5Tb4b4b4]Tb4b4b4)Tb4b4b4;
Te6edf3savePrefsTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffOK - reboot to applyTa5d6ff"Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72ifdef WITH_BRIDGE
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6ffbridge.enabled Ta5d6ff"Tb4b4b4, T79c0ff15Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3_prefsTff7b72-Tff7b72>Te6edf3bridge_enabled Tff7b72= Te6edf3memcmpTb4b4b4(Tff7b72&Te6edf3configTb4b4b4[T79c0ff15Tb4b4b4]Tb4b4b4, Ta5d6ff"Ta5d6ffonTa5d6ff"Tb4b4b4, T79c0ff2Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4;
Te6edf3_callbacksTff7b72-Tff7b72>Te6edf3setBridgeStateTb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3bridge_enabledTb4b4b4)Tb4b4b4;
Te6edf3savePrefsTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffOKTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6ffbridge.delay Ta5d6ff"Tb4b4b4, T79c0ff13Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Tffa657int Te6edf3delay Tff7b72= Te6edf3_atoiTb4b4b4(Tff7b72&Te6edf3configTb4b4b4[T79c0ff13Tb4b4b4]Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3delay Tff7b72>Tff7b72= T79c0ff0 Tff7b72&Tff7b72& Te6edf3delay Tff7b72<Tff7b72= T79c0ff10000Tb4b4b4) Tb4b4b4{
Te6edf3_prefsTff7b72-Tff7b72>Te6edf3bridge_delay Tff7b72= Tb4b4b4(Tffa657uint16_tTb4b4b4)Te6edf3delayTb4b4b4;
Te6edf3savePrefsTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffOKTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffError: delay must be between 0-10000 msTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6ffbridge.source Ta5d6ff"Tb4b4b4, T79c0ff14Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3_prefsTff7b72-Tff7b72>Te6edf3bridge_pkt_src Tff7b72= Te6edf3memcmpTb4b4b4(Tff7b72&Te6edf3configTb4b4b4[T79c0ff14Tb4b4b4]Tb4b4b4, Ta5d6ff"Ta5d6ffrxTa5d6ff"Tb4b4b4, T79c0ff2Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4;
Te6edf3savePrefsTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffOKTa5d6ff"Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif
Tff7b72#Tff7b72ifdef WITH_RS232_BRIDGE
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6ffbridge.baud Ta5d6ff"Tb4b4b4, T79c0ff12Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Tffa657uint32_t Te6edf3baud Tff7b72= Te6edf3atoiTb4b4b4(Tff7b72&Te6edf3configTb4b4b4[T79c0ff12Tb4b4b4]Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3baud Tff7b72>Tff7b72= T79c0ff9600 Tff7b72&Tff7b72& Te6edf3baud Tff7b72<Tff7b72= Te6edf3BRIDGE_MAX_BAUDTb4b4b4) Tb4b4b4{
Te6edf3_prefsTff7b72-Tff7b72>Te6edf3bridge_baud Tff7b72= Tb4b4b4(Tffa657uint32_tTb4b4b4)Te6edf3baudTb4b4b4;
Te6edf3_callbacksTff7b72-Tff7b72>Te6edf3restartBridgeTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3savePrefsTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffOKTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3sprintfTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffError: baud rate must be between 9600-%dTa5d6ff"Tb4b4b4,Te6edf3BRIDGE_MAX_BAUDTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72#Tff7b72endif
Tff7b72#Tff7b72ifdef WITH_ESPNOW_BRIDGE
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6ffbridge.channel Ta5d6ff"Tb4b4b4, T79c0ff15Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Tffa657int Te6edf3ch Tff7b72= Te6edf3atoiTb4b4b4(Tff7b72&Te6edf3configTb4b4b4[T79c0ff15Tb4b4b4]Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3ch Tff7b72> T79c0ff0 Tff7b72&Tff7b72& Te6edf3ch Tff7b72< T79c0ff15Tb4b4b4) Tb4b4b4{
Te6edf3_prefsTff7b72-Tff7b72>Te6edf3bridge_channel Tff7b72= Tb4b4b4(Tffa657uint8_tTb4b4b4)Te6edf3chTb4b4b4;
Te6edf3_callbacksTff7b72-Tff7b72>Te6edf3restartBridgeTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3savePrefsTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffOKTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffError: channel must be between 1-14Ta5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6ffbridge.secret Ta5d6ff"Tb4b4b4, T79c0ff14Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3StrHelperTff7b72:Tff7b72:Te6edf3strncpyTb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3bridge_secretTb4b4b4, Tff7b72&Te6edf3configTb4b4b4[T79c0ff14Tb4b4b4]Tb4b4b4, Tff7b72sizeofTb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3bridge_secretTb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3_callbacksTff7b72-Tff7b72>Te6edf3restartBridgeTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3savePrefsTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffOKTa5d6ff"Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6ffadc.multiplier Ta5d6ff"Tb4b4b4, T79c0ff15Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3_prefsTff7b72-Tff7b72>Te6edf3adc_multiplier Tff7b72= Te6edf3atofTb4b4b4(Tff7b72&Te6edf3configTb4b4b4[T79c0ff15Tb4b4b4]Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3_boardTff7b72-Tff7b72>Te6edf3setAdcMultiplierTb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3adc_multiplierTb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3savePrefsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3adc_multiplier Tff7b72=Tff7b72= T79c0ff0.0fTb4b4b4) Tb4b4b4{
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffOK - using default board multiplierTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3sprintfTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffOK - multiplier set to %.3fTa5d6ff"Tb4b4b4, Te6edf3_prefsTff7b72-Tff7b72>Te6edf3adc_multiplierTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3_prefsTff7b72-Tff7b72>Te6edf3adc_multiplier Tff7b72= T79c0ff0.0fTb4b4b4;
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffError: unsupportedTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4;
Tff7b72#Tff7b72if defined(USE_LR2021)
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6ffextra.sf Ta5d6ff"Tb4b4b4, T79c0ff9Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3strcpyTb4b4b4(Te6edf3tmpTb4b4b4, Tff7b72&Te6edf3configTb4b4b4[T79c0ff9Tb4b4b4]Tb4b4b4)Tb4b4b4;
Tff7b72const Tffa657char Tff7b72*Te6edf3partsTb4b4b4[T79c0ff4Tb4b4b4]Tb4b4b4;
Tffa657uint8_t Te6edf3sideDetSFsTb4b4b4[T79c0ff4Tb4b4b4]Tb4b4b4;
Tffa657int Te6edf3num Tff7b72= Te6edf3meshTff7b72:Tff7b72:Te6edf3UtilsTff7b72:Tff7b72:Te6edf3parseTextPartsTb4b4b4(Te6edf3tmpTb4b4b4, Te6edf3partsTb4b4b4, T79c0ff4Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3num Tff7b72> T79c0ff3Tb4b4b4) Tb4b4b4{
Te6edf3sprintfTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffInvalid extra SF configTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Tff7b72for Tb4b4b4(Tffa657int Te6edf3i Tff7b72= T79c0ff0Tb4b4b4; Te6edf3i Tff7b72< Te6edf3numTb4b4b4; Te6edf3iTff7b72+Tff7b72+Tb4b4b4) Tb4b4b4{
Te6edf3sideDetSFsTb4b4b4[Te6edf3iTb4b4b4] Tff7b72= Te6edf3atoiTb4b4b4(Te6edf3partsTb4b4b4[Te6edf3iTb4b4b4]Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Te6edf3sideDetSFsTb4b4b4[Te6edf3numTb4b4b4] Tff7b72= T79c0ff0Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3_callbacksTff7b72-Tff7b72>Te6edf3configSideDetectorsTb4b4b4(Te6edf3sideDetSFsTb4b4b4, Te6edf3numTb4b4b4, Te6edf3_prefsTff7b72-Tff7b72>Te6edf3bwTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72for Tb4b4b4(Tffa657int Te6edf3i Tff7b72= T79c0ff0Tb4b4b4; Te6edf3i Tff7b72<Tff7b72= Te6edf3numTb4b4b4; Te6edf3iTff7b72+Tff7b72+Tb4b4b4) Te6edf3_prefsTff7b72-Tff7b72>Te6edf3extra_sfTb4b4b4[Te6edf3iTb4b4b4] Tff7b72= Te6edf3sideDetSFsTb4b4b4[Te6edf3iTb4b4b4]Tb4b4b4;
Te6edf3savePrefsTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3sprintfTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffOK - extra SFs setTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3sprintfTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffInvalid extra SF configTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tff7b72#Tff7b72endif
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffunknown config: Ta5d6ff"Tb4b4b4)Tb4b4b4;
Te6edf3StrHelperTff7b72:Tff7b72:Te6edf3strncpyTb4b4b4(Tff7b72&Te6edf3replyTb4b4b4[T79c0ff16Tb4b4b4]Tb4b4b4, Te6edf3configTb4b4b4, T79c0ff160T79c0ff-17Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}

Tffa657void Td2a8ffCommonCLI::handleGetCmdTb4b4b4(Tffa657uint32_t Te6edf3sender_timestampTb4b4b4, Tffa657charTff7b72* Te6edf3commandTb4b4b4, Tffa657charTff7b72* Te6edf3replyTb4b4b4) Tb4b4b4{
Tff7b72const Tffa657charTff7b72* Te6edf3config Tff7b72= Tff7b72&Te6edf3commandTb4b4b4[T79c0ff4Tb4b4b4]Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6ffdutycycleTa5d6ff"Tb4b4b4, T79c0ff9Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Tffa657float Te6edf3dc Tff7b72= T79c0ff100.0f Tff7b72/ Tb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3airtime_factor Tff7b72+ T79c0ff1.0fTb4b4b4)Tb4b4b4;
Tffa657int Te6edf3dc_int Tff7b72= Tb4b4b4(Tffa657intTb4b4b4)Te6edf3dcTb4b4b4;
Tffa657int Te6edf3dc_frac Tff7b72= Tb4b4b4(Tffa657intTb4b4b4)Tb4b4b4(Tb4b4b4(Te6edf3dc Tff7b72- Te6edf3dc_intTb4b4b4) Tff7b72* T79c0ff10.0f Tff7b72+ T79c0ff0.5fTb4b4b4)Tb4b4b4;
Te6edf3sprintfTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ff> %d.%d%%Ta5d6ff"Tb4b4b4, Te6edf3dc_intTb4b4b4, Te6edf3dc_fracTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6ffafTa5d6ff"Tb4b4b4, T79c0ff2Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3sprintfTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ff> %sTa5d6ff"Tb4b4b4, Te6edf3StrHelperTff7b72:Tff7b72:Te6edf3ftoaTb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3airtime_factorTb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6ffint.threshTa5d6ff"Tb4b4b4, T79c0ff10Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3sprintfTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ff> %dTa5d6ff"Tb4b4b4, Tb4b4b4(Tffa657uint32_tTb4b4b4) Te6edf3_prefsTff7b72-Tff7b72>Te6edf3interference_thresholdTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6ffcadTa5d6ff"Tb4b4b4, T79c0ff3Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3sprintfTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ff> %sTa5d6ff"Tb4b4b4, Te6edf3_prefsTff7b72-Tff7b72>Te6edf3cad_enabled Tff7b72? Ta5d6ff"Ta5d6ffonTa5d6ff" Tff7b72: Ta5d6ff"Ta5d6ffoffTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6ffagc.reset.intervalTa5d6ff"Tb4b4b4, T79c0ff18Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3sprintfTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ff> %dTa5d6ff"Tb4b4b4, Tb4b4b4(Tb4b4b4(Tffa657uint32_tTb4b4b4) Te6edf3_prefsTff7b72-Tff7b72>Te6edf3agc_reset_intervalTb4b4b4) Tff7b72* T79c0ff4Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6ffmulti.acksTa5d6ff"Tb4b4b4, T79c0ff10Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3sprintfTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ff> %dTa5d6ff"Tb4b4b4, Tb4b4b4(Tffa657uint32_tTb4b4b4) Te6edf3_prefsTff7b72-Tff7b72>Te6edf3multi_acksTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6ffallow.read.onlyTa5d6ff"Tb4b4b4, T79c0ff15Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3sprintfTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ff> %sTa5d6ff"Tb4b4b4, Te6edf3_prefsTff7b72-Tff7b72>Te6edf3allow_read_only Tff7b72? Ta5d6ff"Ta5d6ffonTa5d6ff" Tff7b72: Ta5d6ff"Ta5d6ffoffTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6ffflood.advert.intervalTa5d6ff"Tb4b4b4, T79c0ff21Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3sprintfTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ff> %dTa5d6ff"Tb4b4b4, Tb4b4b4(Tb4b4b4(Tffa657uint32_tTb4b4b4) Te6edf3_prefsTff7b72-Tff7b72>Te6edf3flood_advert_intervalTb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6ffadvert.intervalTa5d6ff"Tb4b4b4, T79c0ff15Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3sprintfTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ff> %dTa5d6ff"Tb4b4b4, Tb4b4b4(Tb4b4b4(Tffa657uint32_tTb4b4b4) Te6edf3_prefsTff7b72-Tff7b72>Te6edf3advert_intervalTb4b4b4) Tff7b72* T79c0ff2Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6ffguest.passwordTa5d6ff"Tb4b4b4, T79c0ff14Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3sprintfTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ff> %sTa5d6ff"Tb4b4b4, Te6edf3_prefsTff7b72-Tff7b72>Te6edf3guest_passwordTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3sender_timestamp Tff7b72=Tff7b72= T79c0ff0 Tff7b72&Tff7b72& Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6ffprv.keyTa5d6ff"Tb4b4b4, T79c0ff7Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{ T8b949e// from serial command line only
Tffa657uint8_t Te6edf3prv_keyTb4b4b4[Te6edf3PRV_KEY_SIZETb4b4b4]Tb4b4b4;
Tffa657int Te6edf3len Tff7b72= Te6edf3_callbacksTff7b72-Tff7b72>Te6edf3getSelfIdTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3writeToTb4b4b4(Te6edf3prv_keyTb4b4b4, Te6edf3PRV_KEY_SIZETb4b4b4)Tb4b4b4;
Te6edf3meshTff7b72:Tff7b72:Te6edf3UtilsTff7b72:Tff7b72:Te6edf3toHexTb4b4b4(Te6edf3tmpTb4b4b4, Te6edf3prv_keyTb4b4b4, Te6edf3lenTb4b4b4)Tb4b4b4;
Te6edf3sprintfTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ff> %sTa5d6ff"Tb4b4b4, Te6edf3tmpTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6ffnameTa5d6ff"Tb4b4b4, T79c0ff4Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3sprintfTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ff> %sTa5d6ff"Tb4b4b4, Te6edf3_prefsTff7b72-Tff7b72>Te6edf3node_nameTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6ffrepeatTa5d6ff"Tb4b4b4, T79c0ff6Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3sprintfTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ff> %sTa5d6ff"Tb4b4b4, Te6edf3_prefsTff7b72-Tff7b72>Te6edf3disable_fwd Tff7b72? Ta5d6ff"Ta5d6ffoffTa5d6ff" Tff7b72: Ta5d6ff"Ta5d6ffonTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6fflatTa5d6ff"Tb4b4b4, T79c0ff3Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3sprintfTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ff> %sTa5d6ff"Tb4b4b4, Te6edf3StrHelperTff7b72:Tff7b72:Te6edf3ftoaTb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3node_latTb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6fflonTa5d6ff"Tb4b4b4, T79c0ff3Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3sprintfTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ff> %sTa5d6ff"Tb4b4b4, Te6edf3StrHelperTff7b72:Tff7b72:Te6edf3ftoaTb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3node_lonTb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6ffradio.rxgainTa5d6ff"Tb4b4b4, T79c0ff12Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3sprintfTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ff> %sTa5d6ff"Tb4b4b4, Te6edf3_prefsTff7b72-Tff7b72>Te6edf3rx_boosted_gain Tff7b72? Ta5d6ff"Ta5d6ffonTa5d6ff" Tff7b72: Ta5d6ff"Ta5d6ffoffTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6ffradio.fem.rxgainTa5d6ff"Tb4b4b4, T79c0ff16Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3_boardTff7b72-Tff7b72>Te6edf3canControlLoRaFemLnaTb4b4b4(Tb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffError: unsupportedTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3sprintfTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ff> %sTa5d6ff"Tb4b4b4, Te6edf3_boardTff7b72-Tff7b72>Te6edf3isLoRaFemLnaEnabledTb4b4b4(Tb4b4b4) Tff7b72? Ta5d6ff"Ta5d6ffonTa5d6ff" Tff7b72: Ta5d6ff"Ta5d6ffoffTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6ffradio.fem.txgainTa5d6ff"Tb4b4b4, T79c0ff16Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3_boardTff7b72-Tff7b72>Te6edf3canControlLoRaFemPaGainTb4b4b4(Tb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffError: unsupportedTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3sprintfTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ff> %sTa5d6ff"Tb4b4b4, Te6edf3_boardTff7b72-Tff7b72>Te6edf3isLoRaFemPaGainEnabledTb4b4b4(Tb4b4b4) Tff7b72? Ta5d6ff"Ta5d6ffonTa5d6ff" Tff7b72: Ta5d6ff"Ta5d6ffoffTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6ffradioTa5d6ff"Tb4b4b4, T79c0ff5Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Tffa657char Te6edf3freqTb4b4b4[T79c0ff16Tb4b4b4]Tb4b4b4, Te6edf3bwTb4b4b4[T79c0ff16Tb4b4b4]Tb4b4b4;
Te6edf3strcpyTb4b4b4(Te6edf3freqTb4b4b4, Te6edf3StrHelperTff7b72:Tff7b72:Te6edf3ftoaTb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3freqTb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3strcpyTb4b4b4(Te6edf3bwTb4b4b4, Te6edf3StrHelperTff7b72:Tff7b72:Te6edf3ftoa3Tb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3bwTb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3sprintfTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ff> %s,%s,%d,%dTa5d6ff"Tb4b4b4, Te6edf3freqTb4b4b4, Te6edf3bwTb4b4b4, Tb4b4b4(Tffa657uint32_tTb4b4b4)Te6edf3_prefsTff7b72-Tff7b72>Te6edf3sfTb4b4b4, Tb4b4b4(Tffa657uint32_tTb4b4b4)Te6edf3_prefsTff7b72-Tff7b72>Te6edf3crTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6ffrxdelayTa5d6ff"Tb4b4b4, T79c0ff7Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3sprintfTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ff> %sTa5d6ff"Tb4b4b4, Te6edf3StrHelperTff7b72:Tff7b72:Te6edf3ftoaTb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3rx_delay_baseTb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6fftxdelayTa5d6ff"Tb4b4b4, T79c0ff7Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3sprintfTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ff> %sTa5d6ff"Tb4b4b4, Te6edf3StrHelperTff7b72:Tff7b72:Te6edf3ftoaTb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3tx_delay_factorTb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6ffflood.max.advertTa5d6ff"Tb4b4b4, T79c0ff16Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3sprintfTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ff> %dTa5d6ff"Tb4b4b4, Tb4b4b4(Tffa657uint32_tTb4b4b4)Te6edf3_prefsTff7b72-Tff7b72>Te6edf3flood_max_advertTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6ffflood.max.unscopedTa5d6ff"Tb4b4b4, T79c0ff18Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3sprintfTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ff> %dTa5d6ff"Tb4b4b4, Tb4b4b4(Tffa657uint32_tTb4b4b4)Te6edf3_prefsTff7b72-Tff7b72>Te6edf3flood_max_unscopedTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6ffflood.maxTa5d6ff"Tb4b4b4, T79c0ff9Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3sprintfTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ff> %dTa5d6ff"Tb4b4b4, Tb4b4b4(Tffa657uint32_tTb4b4b4)Te6edf3_prefsTff7b72-Tff7b72>Te6edf3flood_maxTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6ffdirect.txdelayTa5d6ff"Tb4b4b4, T79c0ff14Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3sprintfTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ff> %sTa5d6ff"Tb4b4b4, Te6edf3StrHelperTff7b72:Tff7b72:Te6edf3ftoaTb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3direct_tx_delay_factorTb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6ffowner.infoTa5d6ff"Tb4b4b4, T79c0ff10Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72auto Te6edf3start Tff7b72= Te6edf3replyTb4b4b4;
Tff7b72*Te6edf3replyTff7b72+Tff7b72+ Tff7b72= Ta5d6ff'Ta5d6ff>Ta5d6ff'Tb4b4b4;
Tff7b72*Te6edf3replyTff7b72+Tff7b72+ Tff7b72= Ta5d6ff'Ta5d6ff Ta5d6ff'Tb4b4b4;
Tff7b72const Tffa657charTff7b72* Te6edf3sp Tff7b72= Te6edf3_prefsTff7b72-Tff7b72>Te6edf3owner_infoTb4b4b4;
Tff7b72while Tb4b4b4(Tff7b72*Te6edf3sp Tff7b72&Tff7b72& Te6edf3reply Tff7b72- Te6edf3start Tff7b72< T79c0ff159Tb4b4b4) Tb4b4b4{
Tff7b72*Te6edf3replyTff7b72+Tff7b72+ Tff7b72= Tb4b4b4(Tff7b72*Te6edf3sp Tff7b72=Tff7b72= Ta5d6ff'Ta5d6ff\nTa5d6ff'Tb4b4b4) Tff7b72? Ta5d6ff'Ta5d6ff|Ta5d6ff' Tff7b72: Tff7b72*Te6edf3spTb4b4b4; T8b949e// translate newline back to orig '|'
Te6edf3spTff7b72+Tff7b72+Tb4b4b4;
Tb4b4b4}
Tff7b72*Te6edf3reply Tff7b72= T79c0ff0Tb4b4b4; T8b949e// set null terminator
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6ffpath.hash.modeTa5d6ff"Tb4b4b4, T79c0ff14Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3sprintfTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ff> %dTa5d6ff"Tb4b4b4, Tb4b4b4(Tffa657uint32_tTb4b4b4)Te6edf3_prefsTff7b72-Tff7b72>Te6edf3path_hash_modeTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6ffloop.detectTa5d6ff"Tb4b4b4, T79c0ff11Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3loop_detect Tff7b72=Tff7b72= Te6edf3LOOP_DETECT_OFFTb4b4b4) Tb4b4b4{
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ff> offTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3loop_detect Tff7b72=Tff7b72= Te6edf3LOOP_DETECT_MINIMALTb4b4b4) Tb4b4b4{
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ff> minimalTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3loop_detect Tff7b72=Tff7b72= Te6edf3LOOP_DETECT_MODERATETb4b4b4) Tb4b4b4{
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ff> moderateTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ff> strictTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6fftxTa5d6ff"Tb4b4b4, T79c0ff2Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0 Tff7b72&Tff7b72& Tb4b4b4(Te6edf3configTb4b4b4[T79c0ff2Tb4b4b4] Tff7b72=Tff7b72= T79c0ff0 Tff7b72|Tff7b72| Te6edf3configTb4b4b4[T79c0ff2Tb4b4b4] Tff7b72=Tff7b72= Ta5d6ff'Ta5d6ff Ta5d6ff'Tb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3sprintfTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ff> %dTa5d6ff"Tb4b4b4, Tb4b4b4(Tffa657int32_tTb4b4b4) Te6edf3_prefsTff7b72-Tff7b72>Te6edf3tx_power_dbmTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6fffreqTa5d6ff"Tb4b4b4, T79c0ff4Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3sprintfTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ff> %sTa5d6ff"Tb4b4b4, Te6edf3StrHelperTff7b72:Tff7b72:Te6edf3ftoaTb4b4b4(Te6edf3_prefsTff7b72-Tff7b72>Te6edf3freqTb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6ffpublic.keyTa5d6ff"Tb4b4b4, T79c0ff10Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ff> Ta5d6ff"Tb4b4b4)Tb4b4b4;
Te6edf3meshTff7b72:Tff7b72:Te6edf3UtilsTff7b72:Tff7b72:Te6edf3toHexTb4b4b4(Tff7b72&Te6edf3replyTb4b4b4[T79c0ff2Tb4b4b4]Tb4b4b4, Te6edf3_callbacksTff7b72-Tff7b72>Te6edf3getSelfIdTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3pub_keyTb4b4b4, Te6edf3PUB_KEY_SIZETb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6ffroleTa5d6ff"Tb4b4b4, T79c0ff4Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3sprintfTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ff> %sTa5d6ff"Tb4b4b4, Te6edf3_callbacksTff7b72-Tff7b72>Te6edf3getRoleTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6ffbridge.typeTa5d6ff"Tb4b4b4, T79c0ff11Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3sprintfTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ff> %sTa5d6ff"Tb4b4b4,
Tff7b72#Tff7b72ifdef WITH_RS232_BRIDGE
Ta5d6ff"Ta5d6ffrs232Ta5d6ff"
Tff7b72#Tff7b72elif WITH_ESPNOW_BRIDGE
Ta5d6ff"Ta5d6ffespnowTa5d6ff"
Tff7b72#Tff7b72else
Ta5d6ff"Ta5d6ffnoneTa5d6ff"
Tff7b72#Tff7b72endif
Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72ifdef WITH_BRIDGE
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6ffbridge.enabledTa5d6ff"Tb4b4b4, T79c0ff14Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3sprintfTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ff> %sTa5d6ff"Tb4b4b4, Te6edf3_prefsTff7b72-Tff7b72>Te6edf3bridge_enabled Tff7b72? Ta5d6ff"Ta5d6ffonTa5d6ff" Tff7b72: Ta5d6ff"Ta5d6ffoffTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6ffbridge.delayTa5d6ff"Tb4b4b4, T79c0ff12Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3sprintfTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ff> %dTa5d6ff"Tb4b4b4, Tb4b4b4(Tffa657uint32_tTb4b4b4)Te6edf3_prefsTff7b72-Tff7b72>Te6edf3bridge_delayTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6ffbridge.sourceTa5d6ff"Tb4b4b4, T79c0ff13Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3sprintfTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ff> %sTa5d6ff"Tb4b4b4, Te6edf3_prefsTff7b72-Tff7b72>Te6edf3bridge_pkt_src Tff7b72? Ta5d6ff"Ta5d6fflogRxTa5d6ff" Tff7b72: Ta5d6ff"Ta5d6fflogTxTa5d6ff"Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif
Tff7b72#Tff7b72ifdef WITH_RS232_BRIDGE
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6ffbridge.baudTa5d6ff"Tb4b4b4, T79c0ff11Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3sprintfTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ff> %dTa5d6ff"Tb4b4b4, Tb4b4b4(Tffa657uint32_tTb4b4b4)Te6edf3_prefsTff7b72-Tff7b72>Te6edf3bridge_baudTb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif
Tff7b72#Tff7b72ifdef WITH_ESPNOW_BRIDGE
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6ffbridge.channelTa5d6ff"Tb4b4b4, T79c0ff14Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3sprintfTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ff> %dTa5d6ff"Tb4b4b4, Tb4b4b4(Tffa657uint32_tTb4b4b4)Te6edf3_prefsTff7b72-Tff7b72>Te6edf3bridge_channelTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6ffbridge.secretTa5d6ff"Tb4b4b4, T79c0ff13Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3sprintfTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ff> %sTa5d6ff"Tb4b4b4, Te6edf3_prefsTff7b72-Tff7b72>Te6edf3bridge_secretTb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6ffbootloader.verTa5d6ff"Tb4b4b4, T79c0ff14Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72ifdef NRF52_PLATFORM
Tffa657char Te6edf3verTb4b4b4[T79c0ff32Tb4b4b4]Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3_boardTff7b72-Tff7b72>Te6edf3getBootloaderVersionTb4b4b4(Te6edf3verTb4b4b4, Tff7b72sizeofTb4b4b4(Te6edf3verTb4b4b4)Tb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3sprintfTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ff> %sTa5d6ff"Tb4b4b4, Te6edf3verTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ff> unknownTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72#Tff7b72else
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffError: unsupportedTa5d6ff"Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6ffadc.multiplierTa5d6ff"Tb4b4b4, T79c0ff14Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Tffa657float Te6edf3adc_mult Tff7b72= Te6edf3_boardTff7b72-Tff7b72>Te6edf3getAdcMultiplierTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3adc_mult Tff7b72=Tff7b72= T79c0ff0.0fTb4b4b4) Tb4b4b4{
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffError: unsupportedTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3sprintfTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ff> %.3fTa5d6ff"Tb4b4b4, Te6edf3adc_multTb4b4b4)Tb4b4b4;
Tb4b4b4}
T8b949e// Power management commands
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6ffpwrmgt.supportTa5d6ff"Tb4b4b4, T79c0ff14Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72ifdef NRF52_POWER_MANAGEMENT
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ff> supportedTa5d6ff"Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72else
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ff> unsupportedTa5d6ff"Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6ffpwrmgt.sourceTa5d6ff"Tb4b4b4, T79c0ff13Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72ifdef NRF52_POWER_MANAGEMENT
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Te6edf3_boardTff7b72-Tff7b72>Te6edf3isExternalPoweredTb4b4b4(Tb4b4b4) Tff7b72? Ta5d6ff"Ta5d6ff> externalTa5d6ff" Tff7b72: Ta5d6ff"Ta5d6ff> batteryTa5d6ff"Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72else
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffERROR: Power management not supportedTa5d6ff"Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6ffpwrmgt.bootreasonTa5d6ff"Tb4b4b4, T79c0ff17Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3sprintfTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ff> Reset: %s; Shutdown: %sTa5d6ff"Tb4b4b4,
Te6edf3_boardTff7b72-Tff7b72>Te6edf3getResetReasonStringTb4b4b4(Te6edf3_boardTff7b72-Tff7b72>Te6edf3getResetReasonTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4,
Te6edf3_boardTff7b72-Tff7b72>Te6edf3getShutdownReasonStringTb4b4b4(Te6edf3_boardTff7b72-Tff7b72>Te6edf3getShutdownReasonTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6ffpwrmgt.bootmvTa5d6ff"Tb4b4b4, T79c0ff13Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72ifdef NRF52_POWER_MANAGEMENT
Te6edf3sprintfTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ff> %u mVTa5d6ff"Tb4b4b4, Te6edf3_boardTff7b72-Tff7b72>Te6edf3getBootVoltageTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72else
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffERROR: Power management not supportedTa5d6ff"Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3memcmpTb4b4b4(Te6edf3configTb4b4b4, Ta5d6ff"Ta5d6ffextra.sfTa5d6ff"Tb4b4b4, T79c0ff8Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Tffa657charTff7b72* Te6edf3tmp Tff7b72= Te6edf3replyTb4b4b4;
Tff7b72for Tb4b4b4(Tffa657int Te6edf3i Tff7b72= T79c0ff0Tb4b4b4; Te6edf3i Tff7b72< T79c0ff3 Tff7b72&Tff7b72& Te6edf3_prefsTff7b72-Tff7b72>Te6edf3extra_sfTb4b4b4[Te6edf3iTb4b4b4] Tff7b72!Tff7b72= T79c0ff0Tb4b4b4; Te6edf3iTff7b72+Tff7b72+Tb4b4b4) Tb4b4b4{
Te6edf3tmp Tff7b72+Tff7b72= Te6edf3sprintfTb4b4b4(Te6edf3tmpTb4b4b4, Ta5d6ff"Ta5d6ff%s%dTa5d6ff"Tb4b4b4, Tb4b4b4(Te6edf3i Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tff7b72? Ta5d6ff"Ta5d6ff" Tff7b72: Ta5d6ff"Ta5d6ff,Ta5d6ff"Tb4b4b4, Te6edf3_prefsTff7b72-Tff7b72>Te6edf3extra_sfTb4b4b4[Te6edf3iTb4b4b4]Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3tmp Tff7b72=Tff7b72= Te6edf3replyTb4b4b4) Tb4b4b4{
Te6edf3sprintfTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffNo extra SF configuredTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3sprintfTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ff??: %sTa5d6ff"Tb4b4b4, Te6edf3configTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}

Tff7b72static Tffa657charTff7b72* Td2a8ffskipSpacesTb4b4b4(Tffa657charTff7b72* Te6edf3sTb4b4b4) Tb4b4b4{
Tff7b72while Tb4b4b4(Tff7b72*Te6edf3s Tff7b72=Tff7b72= Ta5d6ff'Ta5d6ff Ta5d6ff'Tb4b4b4) Te6edf3sTff7b72+Tff7b72+Tb4b4b4;
Tff7b72return Te6edf3sTb4b4b4;
Tb4b4b4}

Tff7b72static Tffa657void Td2a8ffrtrimSpacesTb4b4b4(Tffa657charTff7b72* Te6edf3sTb4b4b4) Tb4b4b4{
Tffa657charTff7b72* Te6edf3e Tff7b72= Te6edf3s Tff7b72+ Te6edf3strlenTb4b4b4(Te6edf3sTb4b4b4)Tb4b4b4;
Tff7b72while Tb4b4b4(Te6edf3e Tff7b72> Te6edf3s Tff7b72&Tff7b72& Te6edf3eTb4b4b4[T79c0ff-1Tb4b4b4] Tff7b72=Tff7b72= Ta5d6ff'Ta5d6ff Ta5d6ff'Tb4b4b4) Tff7b72*Tff7b72-Tff7b72-Te6edf3e Tff7b72= Ta5d6ff'Ta5d6ff\0Ta5d6ff'Tb4b4b4;
Tb4b4b4}

Tff7b72static Tffa657charTff7b72* Td2a8fftakeTokenTb4b4b4(Tffa657charTff7b72*Tff7b72* Te6edf3cursorTb4b4b4) Tb4b4b4{
Tffa657charTff7b72* Te6edf3p Tff7b72= Te6edf3skipSpacesTb4b4b4(Tff7b72*Te6edf3cursorTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72*Te6edf3p Tff7b72=Tff7b72= Ta5d6ff'Ta5d6ff\0Ta5d6ff'Tb4b4b4) Tb4b4b4{ Tff7b72*Te6edf3cursor Tff7b72= Te6edf3pTb4b4b4; Tff7b72return Tffa657nullptrTb4b4b4; Tb4b4b4}
Tffa657charTff7b72* Te6edf3tok Tff7b72= Te6edf3pTb4b4b4;
Tff7b72while Tb4b4b4(Tff7b72*Te6edf3p Tff7b72&Tff7b72& Tff7b72*Te6edf3p Tff7b72!Tff7b72= Ta5d6ff'Ta5d6ff Ta5d6ff'Tb4b4b4) Te6edf3pTff7b72+Tff7b72+Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72*Te6edf3pTb4b4b4) Tff7b72*Te6edf3pTff7b72+Tff7b72+ Tff7b72= Ta5d6ff'Ta5d6ff\0Ta5d6ff'Tb4b4b4;
Tff7b72*Te6edf3cursor Tff7b72= Te6edf3pTb4b4b4;
Tff7b72return Te6edf3tokTb4b4b4;
Tb4b4b4}

Tff7b72static Tffa657charTff7b72* Td2a8ffsplitNameJumpTb4b4b4(Tffa657charTff7b72* Te6edf3tokTb4b4b4) Tb4b4b4{
Tff7b72for Tb4b4b4(Tffa657charTff7b72* Te6edf3q Tff7b72= Te6edf3tokTb4b4b4; Tff7b72*Te6edf3qTb4b4b4; Te6edf3qTff7b72+Tff7b72+Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72*Te6edf3q Tff7b72=Tff7b72= Ta5d6ff'Ta5d6ff|Ta5d6ff' Tff7b72|Tff7b72| Tff7b72*Te6edf3q Tff7b72=Tff7b72= Ta5d6ff'Ta5d6ff,Ta5d6ff'Tb4b4b4) Tb4b4b4{
Tff7b72*Te6edf3q Tff7b72= Ta5d6ff'Ta5d6ff\0Ta5d6ff'Tb4b4b4;
Tffa657charTff7b72* Te6edf3jump Tff7b72= Te6edf3skipSpacesTb4b4b4(Te6edf3q Tff7b72+ T79c0ff1Tb4b4b4)Tb4b4b4;
Te6edf3rtrimSpacesTb4b4b4(Te6edf3jumpTb4b4b4)Tb4b4b4;
Tff7b72return Te6edf3jumpTb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tff7b72return Tffa657nullptrTb4b4b4;
Tb4b4b4}

Tff7b72static Tffa657bool Td2a8ffprocessRegionDefSegmentTb4b4b4(Te6edf3RegionMapTff7b72* Te6edf3mapTb4b4b4, Tffa657charTff7b72* Te6edf3tokTb4b4b4, Te6edf3RegionEntryTff7b72*Tff7b72* Te6edf3cursorTb4b4b4, Tffa657charTff7b72* Te6edf3replyTb4b4b4) Tb4b4b4{
Tffa657charTff7b72* Te6edf3jump Tff7b72= Te6edf3splitNameJumpTb4b4b4(Te6edf3tokTb4b4b4)Tb4b4b4;
Tffa657charTff7b72* Te6edf3name Tff7b72= Te6edf3skipSpacesTb4b4b4(Te6edf3tokTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72*Te6edf3name Tff7b72=Tff7b72= Ta5d6ff'Ta5d6ff\0Ta5d6ff'Tb4b4b4) Tb4b4b4{ Te6edf3snprintfTb4b4b4(Te6edf3replyTb4b4b4, T79c0ff160Tb4b4b4, Ta5d6ff"Ta5d6ffErr - empty nameTa5d6ff"Tb4b4b4)Tb4b4b4; Tff7b72return Tffa657falseTb4b4b4; Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3jump Tff7b72&Tff7b72& Tff7b72*Te6edf3jump Tff7b72=Tff7b72= Ta5d6ff'Ta5d6ff\0Ta5d6ff'Tb4b4b4) Tb4b4b4{ Te6edf3snprintfTb4b4b4(Te6edf3replyTb4b4b4, T79c0ff160Tb4b4b4, Ta5d6ff"Ta5d6ffErr - empty jumpTa5d6ff"Tb4b4b4)Tb4b4b4; Tff7b72return Tffa657falseTb4b4b4; Tb4b4b4}

Te6edf3RegionEntryTff7b72* Te6edf3r Tff7b72= Te6edf3mapTff7b72-Tff7b72>Te6edf3putRegionTb4b4b4(Te6edf3nameTb4b4b4, Tb4b4b4(Tff7b72*Te6edf3cursorTb4b4b4)Tff7b72-Tff7b72>Te6edf3idTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3r Tff7b72=Tff7b72= Tffa657NULLTb4b4b4) Tb4b4b4{ Te6edf3snprintfTb4b4b4(Te6edf3replyTb4b4b4, T79c0ff160Tb4b4b4, Ta5d6ff"Ta5d6ffErr - put failed: %sTa5d6ff"Tb4b4b4, Te6edf3nameTb4b4b4)Tb4b4b4; Tff7b72return Tffa657falseTb4b4b4; Tb4b4b4}
Te6edf3rTff7b72-Tff7b72>Te6edf3flags Tff7b72= T79c0ff0Tb4b4b4;

Tff7b72if Tb4b4b4(Te6edf3jumpTb4b4b4) Tb4b4b4{
Te6edf3RegionEntryTff7b72* Te6edf3j Tff7b72= Te6edf3mapTff7b72-Tff7b72>Te6edf3findByNamePrefixTb4b4b4(Te6edf3jumpTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3j Tff7b72=Tff7b72= Tffa657NULLTb4b4b4) Tb4b4b4{ Te6edf3snprintfTb4b4b4(Te6edf3replyTb4b4b4, T79c0ff160Tb4b4b4, Ta5d6ff"Ta5d6ffErr - unknown jump: %sTa5d6ff"Tb4b4b4, Te6edf3jumpTb4b4b4)Tb4b4b4; Tff7b72return Tffa657falseTb4b4b4; Tb4b4b4}
Tff7b72*Te6edf3cursor Tff7b72= Te6edf3jTb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Tff7b72*Te6edf3cursor Tff7b72= Te6edf3rTb4b4b4;
Tb4b4b4}
Tff7b72return Tffa657trueTb4b4b4;
Tb4b4b4}

Tffa657void Td2a8ffCommonCLI::handleRegionCmdTb4b4b4(Tffa657charTff7b72* Te6edf3commandTb4b4b4, Tffa657charTff7b72* Te6edf3replyTb4b4b4) Tb4b4b4{
Te6edf3replyTb4b4b4[T79c0ff0Tb4b4b4] Tff7b72= T79c0ff0Tb4b4b4;

T8b949e// `region def`: must run before parseTextParts mutates the buffer
Tffa657charTff7b72* Te6edf3cmd Tff7b72= Te6edf3skipSpacesTb4b4b4(Te6edf3commandTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3strncmpTb4b4b4(Te6edf3cmdTb4b4b4, Ta5d6ff"Ta5d6ffregion defTa5d6ff"Tb4b4b4, T79c0ff10Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0 Tff7b72&Tff7b72& Tb4b4b4(Te6edf3cmdTb4b4b4[T79c0ff10Tb4b4b4] Tff7b72=Tff7b72= Ta5d6ff'Ta5d6ff Ta5d6ff' Tff7b72|Tff7b72| Te6edf3cmdTb4b4b4[T79c0ff10Tb4b4b4] Tff7b72=Tff7b72= Ta5d6ff'Ta5d6ff\0Ta5d6ff'Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tffa657charTff7b72* Te6edf3payload Tff7b72= Te6edf3skipSpacesTb4b4b4(Te6edf3cmd Tff7b72+ T79c0ff10Tb4b4b4)Tb4b4b4;
Te6edf3rtrimSpacesTb4b4b4(Te6edf3payloadTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72*Te6edf3payload Tff7b72=Tff7b72= Ta5d6ff'Ta5d6ff\0Ta5d6ff'Tb4b4b4) Tb4b4b4{ Te6edf3snprintfTb4b4b4(Te6edf3replyTb4b4b4, T79c0ff160Tb4b4b4, Ta5d6ff"Ta5d6ffErr - empty defTa5d6ff"Tb4b4b4)Tb4b4b4; Tff7b72returnTb4b4b4; Tb4b4b4}

Te6edf3RegionEntryTff7b72* Te6edf3cursor Tff7b72= Tff7b72&Te6edf3_region_mapTff7b72-Tff7b72>Te6edf3getWildcardTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72for Tb4b4b4(Tffa657charTff7b72* Te6edf3tokTb4b4b4; Tb4b4b4(Te6edf3tok Tff7b72= Te6edf3takeTokenTb4b4b4(Tff7b72&Te6edf3payloadTb4b4b4)Tb4b4b4) Tff7b72!Tff7b72= Tffa657nullptrTb4b4b4; Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3processRegionDefSegmentTb4b4b4(Te6edf3_region_mapTb4b4b4, Te6edf3tokTb4b4b4, Tff7b72&Te6edf3cursorTb4b4b4, Te6edf3replyTb4b4b4)Tb4b4b4) Tff7b72returnTb4b4b4;
Tb4b4b4}
Te6edf3_region_mapTff7b72-Tff7b72>Te6edf3exportToTb4b4b4(Te6edf3replyTb4b4b4, T79c0ff160Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}

Tff7b72const Tffa657charTff7b72* Te6edf3partsTb4b4b4[T79c0ff4Tb4b4b4]Tb4b4b4;
Tffa657int Te6edf3n Tff7b72= Te6edf3meshTff7b72:Tff7b72:Te6edf3UtilsTff7b72:Tff7b72:Te6edf3parseTextPartsTb4b4b4(Te6edf3commandTb4b4b4, Te6edf3partsTb4b4b4, T79c0ff4Tb4b4b4, Ta5d6ff'Ta5d6ff Ta5d6ff'Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3n Tff7b72=Tff7b72= T79c0ff1Tb4b4b4) Tb4b4b4{
Te6edf3_region_mapTff7b72-Tff7b72>Te6edf3exportToTb4b4b4(Te6edf3replyTb4b4b4, T79c0ff160Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3n Tff7b72>Tff7b72= T79c0ff2 Tff7b72&Tff7b72& Te6edf3strcmpTb4b4b4(Te6edf3partsTb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4, Ta5d6ff"Ta5d6ffloadTa5d6ff"Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3_callbacksTff7b72-Tff7b72>Te6edf3startRegionsLoadTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3n Tff7b72>Tff7b72= T79c0ff2 Tff7b72&Tff7b72& Te6edf3strcmpTb4b4b4(Te6edf3partsTb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4, Ta5d6ff"Ta5d6ffsaveTa5d6ff"Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3_prefsTff7b72-Tff7b72>Te6edf3discovery_mod_timestamp Tff7b72= Te6edf3getRTCClockTb4b4b4(Tb4b4b4)Tff7b72-Tff7b72>Te6edf3getCurrentTimeTb4b4b4(Tb4b4b4)Tb4b4b4; T8b949e// this node is now 'modified' (for discovery info)
Te6edf3savePrefsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tffa657bool Te6edf3success Tff7b72= Te6edf3_callbacksTff7b72-Tff7b72>Te6edf3saveRegionsTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Te6edf3success Tff7b72? Ta5d6ff"Ta5d6ffOKTa5d6ff" Tff7b72: Ta5d6ff"Ta5d6ffErr - save failedTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3n Tff7b72>Tff7b72= T79c0ff3 Tff7b72&Tff7b72& Te6edf3strcmpTb4b4b4(Te6edf3partsTb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4, Ta5d6ff"Ta5d6ffallowfTa5d6ff"Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72auto Te6edf3region Tff7b72= Te6edf3_region_mapTff7b72-Tff7b72>Te6edf3findByNamePrefixTb4b4b4(Te6edf3partsTb4b4b4[T79c0ff2Tb4b4b4]Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3regionTb4b4b4) Tb4b4b4{
Te6edf3regionTff7b72-Tff7b72>Te6edf3flags Tff7b72&Tff7b72= Tff7b72~Te6edf3REGION_DENY_FLOODTb4b4b4;
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffOKTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffErr - unknown regionTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3n Tff7b72>Tff7b72= T79c0ff3 Tff7b72&Tff7b72& Te6edf3strcmpTb4b4b4(Te6edf3partsTb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4, Ta5d6ff"Ta5d6ffdenyfTa5d6ff"Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72auto Te6edf3region Tff7b72= Te6edf3_region_mapTff7b72-Tff7b72>Te6edf3findByNamePrefixTb4b4b4(Te6edf3partsTb4b4b4[T79c0ff2Tb4b4b4]Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3regionTb4b4b4) Tb4b4b4{
Te6edf3regionTff7b72-Tff7b72>Te6edf3flags Tff7b72|Tff7b72= Te6edf3REGION_DENY_FLOODTb4b4b4;
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffOKTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffErr - unknown regionTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3n Tff7b72>Tff7b72= T79c0ff3 Tff7b72&Tff7b72& Te6edf3strcmpTb4b4b4(Te6edf3partsTb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4, Ta5d6ff"Ta5d6ffgetTa5d6ff"Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72auto Te6edf3region Tff7b72= Te6edf3_region_mapTff7b72-Tff7b72>Te6edf3findByNamePrefixTb4b4b4(Te6edf3partsTb4b4b4[T79c0ff2Tb4b4b4]Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3regionTb4b4b4) Tb4b4b4{
Tff7b72auto Te6edf3parent Tff7b72= Te6edf3_region_mapTff7b72-Tff7b72>Te6edf3findByIdTb4b4b4(Te6edf3regionTff7b72-Tff7b72>Te6edf3parentTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3parent Tff7b72&Tff7b72& Te6edf3parentTff7b72-Tff7b72>Te6edf3id Tff7b72!Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3sprintfTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ff %s (%s) %sTa5d6ff"Tb4b4b4, Te6edf3regionTff7b72-Tff7b72>Te6edf3nameTb4b4b4, Te6edf3parentTff7b72-Tff7b72>Te6edf3nameTb4b4b4, Tb4b4b4(Te6edf3regionTff7b72-Tff7b72>Te6edf3flags Tff7b72& Te6edf3REGION_DENY_FLOODTb4b4b4) Tff7b72? Ta5d6ff"Ta5d6ff" Tff7b72: Ta5d6ff"Ta5d6ffFTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3sprintfTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ff %s %sTa5d6ff"Tb4b4b4, Te6edf3regionTff7b72-Tff7b72>Te6edf3nameTb4b4b4, Tb4b4b4(Te6edf3regionTff7b72-Tff7b72>Te6edf3flags Tff7b72& Te6edf3REGION_DENY_FLOODTb4b4b4) Tff7b72? Ta5d6ff"Ta5d6ff" Tff7b72: Ta5d6ff"Ta5d6ffFTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffErr - unknown regionTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3n Tff7b72>Tff7b72= T79c0ff3 Tff7b72&Tff7b72& Te6edf3strcmpTb4b4b4(Te6edf3partsTb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4, Ta5d6ff"Ta5d6ffhomeTa5d6ff"Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72auto Te6edf3home Tff7b72= Te6edf3_region_mapTff7b72-Tff7b72>Te6edf3findByNamePrefixTb4b4b4(Te6edf3partsTb4b4b4[T79c0ff2Tb4b4b4]Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3homeTb4b4b4) Tb4b4b4{
Te6edf3_region_mapTff7b72-Tff7b72>Te6edf3setHomeRegionTb4b4b4(Te6edf3homeTb4b4b4)Tb4b4b4;
Te6edf3sprintfTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ff home is now %sTa5d6ff"Tb4b4b4, Te6edf3homeTff7b72-Tff7b72>Te6edf3nameTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffErr - unknown regionTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3n Tff7b72=Tff7b72= T79c0ff2 Tff7b72&Tff7b72& Te6edf3strcmpTb4b4b4(Te6edf3partsTb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4, Ta5d6ff"Ta5d6ffhomeTa5d6ff"Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72auto Te6edf3home Tff7b72= Te6edf3_region_mapTff7b72-Tff7b72>Te6edf3getHomeRegionTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3sprintfTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ff home is %sTa5d6ff"Tb4b4b4, Te6edf3home Tff7b72? Te6edf3homeTff7b72-Tff7b72>Te6edf3name Tff7b72: Ta5d6ff"Ta5d6ff*Ta5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3n Tff7b72>Tff7b72= T79c0ff3 Tff7b72&Tff7b72& Te6edf3strcmpTb4b4b4(Te6edf3partsTb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4, Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3strcmpTb4b4b4(Te6edf3partsTb4b4b4[T79c0ff2Tb4b4b4]Tb4b4b4, Ta5d6ff"Ta5d6ff<null>Ta5d6ff"Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3_region_mapTff7b72-Tff7b72>Te6edf3setDefaultRegionTb4b4b4(Tffa657NULLTb4b4b4)Tb4b4b4;
Te6edf3_callbacksTff7b72-Tff7b72>Te6edf3onDefaultRegionChangedTb4b4b4(Tffa657NULLTb4b4b4)Tb4b4b4;
Te6edf3_callbacksTff7b72-Tff7b72>Te6edf3saveRegionsTb4b4b4(Tb4b4b4)Tb4b4b4; T8b949e// persist in one atomic step
Te6edf3sprintfTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ff default scope is now <null>Ta5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Tff7b72auto Te6edf3def Tff7b72= Te6edf3_region_mapTff7b72-Tff7b72>Te6edf3findByNamePrefixTb4b4b4(Te6edf3partsTb4b4b4[T79c0ff2Tb4b4b4]Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3def Tff7b72=Tff7b72= Tffa657NULLTb4b4b4) Tb4b4b4{
Te6edf3def Tff7b72= Te6edf3_region_mapTff7b72-Tff7b72>Te6edf3putRegionTb4b4b4(Te6edf3partsTb4b4b4[T79c0ff2Tb4b4b4]Tb4b4b4, T79c0ff0Tb4b4b4)Tb4b4b4; T8b949e// auto-create the default region
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3defTb4b4b4) Tb4b4b4{
Te6edf3defTff7b72-Tff7b72>Te6edf3flags Tff7b72= T79c0ff0Tb4b4b4; T8b949e// make sure allow flood enabled
Te6edf3_region_mapTff7b72-Tff7b72>Te6edf3setDefaultRegionTb4b4b4(Te6edf3defTb4b4b4)Tb4b4b4;
Te6edf3_callbacksTff7b72-Tff7b72>Te6edf3onDefaultRegionChangedTb4b4b4(Te6edf3defTb4b4b4)Tb4b4b4;
Te6edf3_callbacksTff7b72-Tff7b72>Te6edf3saveRegionsTb4b4b4(Tb4b4b4)Tb4b4b4; T8b949e// persist in one atomic step
Te6edf3sprintfTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ff default scope is now %sTa5d6ff"Tb4b4b4, Te6edf3defTff7b72-Tff7b72>Te6edf3nameTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffErr - region table fullTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3n Tff7b72=Tff7b72= T79c0ff2 Tff7b72&Tff7b72& Te6edf3strcmpTb4b4b4(Te6edf3partsTb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4, Ta5d6ff"Ta5d6ffdefaultTa5d6ff"Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72auto Te6edf3def Tff7b72= Te6edf3_region_mapTff7b72-Tff7b72>Te6edf3getDefaultRegionTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3sprintfTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ff default scope is %sTa5d6ff"Tb4b4b4, Te6edf3def Tff7b72? Te6edf3defTff7b72-Tff7b72>Te6edf3name Tff7b72: Ta5d6ff"Ta5d6ff<null>Ta5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3n Tff7b72>Tff7b72= T79c0ff3 Tff7b72&Tff7b72& Te6edf3strcmpTb4b4b4(Te6edf3partsTb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4, Ta5d6ff"Ta5d6ffputTa5d6ff"Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72auto Te6edf3parent Tff7b72= Te6edf3n Tff7b72>Tff7b72= T79c0ff4 Tff7b72? Te6edf3_region_mapTff7b72-Tff7b72>Te6edf3findByNamePrefixTb4b4b4(Te6edf3partsTb4b4b4[T79c0ff3Tb4b4b4]Tb4b4b4) Tff7b72: Tff7b72&Tb4b4b4(Te6edf3_region_mapTff7b72-Tff7b72>Te6edf3getWildcardTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3parent Tff7b72=Tff7b72= Tffa657NULLTb4b4b4) Tb4b4b4{
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffErr - unknown parentTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Tff7b72auto Te6edf3region Tff7b72= Te6edf3_region_mapTff7b72-Tff7b72>Te6edf3putRegionTb4b4b4(Te6edf3partsTb4b4b4[T79c0ff2Tb4b4b4]Tb4b4b4, Te6edf3parentTff7b72-Tff7b72>Te6edf3idTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3region Tff7b72=Tff7b72= Tffa657NULLTb4b4b4) Tb4b4b4{
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffErr - unable to putTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3regionTff7b72-Tff7b72>Te6edf3flags Tff7b72= T79c0ff0Tb4b4b4; T8b949e// New default: enable flood
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffOK - (flood allowed)Ta5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3n Tff7b72>Tff7b72= T79c0ff3 Tff7b72&Tff7b72& Te6edf3strcmpTb4b4b4(Te6edf3partsTb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4, Ta5d6ff"Ta5d6ffremoveTa5d6ff"Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72auto Te6edf3region Tff7b72= Te6edf3_region_mapTff7b72-Tff7b72>Te6edf3findByNameTb4b4b4(Te6edf3partsTb4b4b4[T79c0ff2Tb4b4b4]Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3regionTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3_region_mapTff7b72-Tff7b72>Te6edf3removeRegionTb4b4b4(Tff7b72*Te6edf3regionTb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffOKTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffErr - not emptyTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffErr - not foundTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3n Tff7b72>Tff7b72= T79c0ff3 Tff7b72&Tff7b72& Te6edf3strcmpTb4b4b4(Te6edf3partsTb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4, Ta5d6ff"Ta5d6fflistTa5d6ff"Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Tffa657uint8_t Te6edf3mask Tff7b72= T79c0ff0Tb4b4b4;
Tffa657bool Te6edf3invert Tff7b72= Tffa657falseTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3strcmpTb4b4b4(Te6edf3partsTb4b4b4[T79c0ff2Tb4b4b4]Tb4b4b4, Ta5d6ff"Ta5d6ffallowedTa5d6ff"Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3mask Tff7b72= Te6edf3REGION_DENY_FLOODTb4b4b4;
Te6edf3invert Tff7b72= Tffa657falseTb4b4b4; T8b949e// list regions that DON'T have DENY flag
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3strcmpTb4b4b4(Te6edf3partsTb4b4b4[T79c0ff2Tb4b4b4]Tb4b4b4, Ta5d6ff"Ta5d6ffdeniedTa5d6ff"Tb4b4b4) Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3mask Tff7b72= Te6edf3REGION_DENY_FLOODTb4b4b4;
Te6edf3invert Tff7b72= Tffa657trueTb4b4b4; T8b949e// list regions that DO have DENY flag
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffErr - use 'allowed' or 'denied'Ta5d6ff"Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tffa657int Te6edf3len Tff7b72= Te6edf3_region_mapTff7b72-Tff7b72>Te6edf3exportNamesToTb4b4b4(Te6edf3replyTb4b4b4, T79c0ff160Tb4b4b4, Te6edf3maskTb4b4b4, Te6edf3invertTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3len Tff7b72=Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ff-none-Ta5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffErr - ??Ta5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}

Served by rngit 1.5.0 - Generated in 0.61s